Другие языки программирования и технологии
Народ, кто разбирается в Delphi?
Проблема в следующем:установил Delphi 7, решил заняться благородным делом- изучить язык программирования... Написал уже 2 простенькие программки, щас пробую написать калькулятор простенький (вычитание, сложение, деление и умножение)... ну так вот, прописал там... создал 4 переменных (a,b,c и d)Теперь при нажатии на сложение калькулятор забирает значение из строки и записывает данные в переменную aпри вычитании- в переменную bПри умножении- с и при делении- в переменную d...я так же объяснил калькулятору что при нажатии на "=" (равно) он складывает переменную А с данными в строке... все получается... как ему объяснить что ему делать если мне надо умножить разделить или вычесть?...Приведите пожалуйста пример кода. Очень хочется закончить программку, дело интересное...
Попробуй не привязывать переменные к арифметическим действиям. Неблагодарное это дело.. . А ещё подумай, как сделать, чтобы твой калькулятор правильно посчитал, сколько будет 2+2*2 :-)
Сначала создаем интерфейс, описывать как его создавать, какие и как ставить кнопки нет
смысла (я оставляю это на вашей фантазии) , всего на форме 26 кнопок (среди них кнопки
цифр – 10, кнопок функций – 16), также один компонент TPanel – на нем будет выводить
результат действия калькулятора.
Итак, приступим к коду. Добавим в наш код 4 главных переменных
var
i,p,r:real; //они будут сохранять числа введенные пользователем
mode:integer; //режим калькулятора (умножить, разделить и т. д)
Можно их внести в раздел protected или private. Теперь приступим к нашим кнопкам. В
каждой цифровой кнопке обработаем событие OnClick. Код будет идентичен для всех
цифровых кнопок (от 1 до 10й) .
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'1';//для всех остальных кнопок заменяйте 1 на
end; //нужное вам число
Вы наверное заметили что мы в самом начале написания программы ввели переменную
mode, настало время объяснить для чего она нам. Переменная mode будет содержать
числовое значение действия: 1 – прибавление, 2 – вычитание, 3 – деление, 4 – умножение,
5 – возведение в степень. Пора заняться теперь кнопками действий. Чтобы долго не
расписывать что делать, ниже код для пяти кнопок (прибавления, вычитания, умножения
деления, возведения в степень) .
procedure TForm1.ButtonMinusClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=2;
Panel1.Caption:='';
end;
procedure TForm1.ButtonDivClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=3;
Panel1.Caption:='';
end;
procedure TForm1.ButtonMultiplyClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=4;
Panel1.Caption:='';
end;
procedure TForm1.ButtonPowerClick(Sender: TObject);
begin
i:=StrToFloat(Panel2.Caption);
mode:=5;
Panel2.Caption:='';
end;
Кратко поясню что мы сделали. При нажатии на кнопку мы сохраняем значения
введенного числа в переменной I, затем переменной mode присвоем значения действия.
Теперь у нас есть все необходимые знания для обработки события OnClick для кнопки со
значением "=".
Ниже проведен код для этого действия:
procedure TForm1.ButtonClick(Sender: TObject);
begin
case mode of
1:begin
p:=StrToFloat(Panel1.Caption);
r:=i+p;
Panel1.Caption:=FloatToStr(r);
end;
2:begin
p:=StrToFloat(Panel1.Caption);
r:=i-p;
Panel1.Caption:=FloatToStr(r);
end;
3:begin
p:=StrToFloat(Panel1.Caption);
r:=i/p;
Panel1.Caption:=FloatToStr(r);
end;
4:begin
p:=StrToFloat(Panel1.Caption);
r:=i*p;
Panel1.Caption:=FloatToStr(r);
end;
5:begin
p:=StrToFloat(Panel1.Caption);
r:=Power(i,p);
Panel1.Caption:=FloatToStr(r);
end;
end;
это сходу в нете нарыл, а вообще скачай книгу Фленова "Библия делфи" хорошая книга и главное с примерами
смысла (я оставляю это на вашей фантазии) , всего на форме 26 кнопок (среди них кнопки
цифр – 10, кнопок функций – 16), также один компонент TPanel – на нем будет выводить
результат действия калькулятора.
Итак, приступим к коду. Добавим в наш код 4 главных переменных
var
i,p,r:real; //они будут сохранять числа введенные пользователем
mode:integer; //режим калькулятора (умножить, разделить и т. д)
Можно их внести в раздел protected или private. Теперь приступим к нашим кнопкам. В
каждой цифровой кнопке обработаем событие OnClick. Код будет идентичен для всех
цифровых кнопок (от 1 до 10й) .
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'1';//для всех остальных кнопок заменяйте 1 на
end; //нужное вам число
Вы наверное заметили что мы в самом начале написания программы ввели переменную
mode, настало время объяснить для чего она нам. Переменная mode будет содержать
числовое значение действия: 1 – прибавление, 2 – вычитание, 3 – деление, 4 – умножение,
5 – возведение в степень. Пора заняться теперь кнопками действий. Чтобы долго не
расписывать что делать, ниже код для пяти кнопок (прибавления, вычитания, умножения
деления, возведения в степень) .
procedure TForm1.ButtonMinusClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=2;
Panel1.Caption:='';
end;
procedure TForm1.ButtonDivClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=3;
Panel1.Caption:='';
end;
procedure TForm1.ButtonMultiplyClick(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=4;
Panel1.Caption:='';
end;
procedure TForm1.ButtonPowerClick(Sender: TObject);
begin
i:=StrToFloat(Panel2.Caption);
mode:=5;
Panel2.Caption:='';
end;
Кратко поясню что мы сделали. При нажатии на кнопку мы сохраняем значения
введенного числа в переменной I, затем переменной mode присвоем значения действия.
Теперь у нас есть все необходимые знания для обработки события OnClick для кнопки со
значением "=".
Ниже проведен код для этого действия:
procedure TForm1.ButtonClick(Sender: TObject);
begin
case mode of
1:begin
p:=StrToFloat(Panel1.Caption);
r:=i+p;
Panel1.Caption:=FloatToStr(r);
end;
2:begin
p:=StrToFloat(Panel1.Caption);
r:=i-p;
Panel1.Caption:=FloatToStr(r);
end;
3:begin
p:=StrToFloat(Panel1.Caption);
r:=i/p;
Panel1.Caption:=FloatToStr(r);
end;
4:begin
p:=StrToFloat(Panel1.Caption);
r:=i*p;
Panel1.Caption:=FloatToStr(r);
end;
5:begin
p:=StrToFloat(Panel1.Caption);
r:=Power(i,p);
Panel1.Caption:=FloatToStr(r);
end;
end;
это сходу в нете нарыл, а вообще скачай книгу Фленова "Библия делфи" хорошая книга и главное с примерами
по моему не совсем верный подход... .
а если другим путём:
1. выбор действия -> на свой кусок кода с действием
либо
2. польская обратная бесскобочная запись
а если другим путём:
1. выбор действия -> на свой кусок кода с действием
либо
2. польская обратная бесскобочная запись
вариантов множество. допустим я когда делал калькулятор я по нажатию на кнопки +-*/ заносил значение в переменную.
потом проверял if op='+' then a+b else if op='-" then и т. д
но вариантов оч много.
потом проверял if op='+' then a+b else if op='-" then и т. д
но вариантов оч много.
Похожие вопросы
- Народ почему я люблю Delphi? а не Visual Studio
- Народ, кто разбирается в ПК включайтесь в дискуссию!!!
- Про новый Фотошоп. Народ, кто разбирается. Скажите, имеет ли смысл переходить на CS-5?
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- Как в Delphi сделать справку?
- Помогите найти ошибку Delphi легкая программка
- Delphi ПОМОГИТЕ ПОЖАЛУЙСТА!
- народ как смещать начало координат при рисовании графика в delphi, компонент paintbox...
- Задача на Delphi. Аааа решите пожалуйста :'(