[TC] программисты на delphi помогите пожалуйста.
Здравствуйте всем. Я пишу на delphi программу калькулятор, хочу, чтобы
арифметические действия выполнялись цепочкой, но как-то не получается
реализовать кнопки плюс, минус, умножить и разделить. Попробовал, но считает
неверно. Текст модуля будет представлен ниже, если кто поможет исправить
ситуацию буду очень благодарен. Можно даже за меня не писать все кнопки, а
показать как нужно разработать действие например на кнопке плюс.С уважением
Леонид. Исправленный модуль или инструкцию как исправить можно в личку.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button5Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var x1, x2, y:real;
c:char;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button10Click(Sender: TObject);
begin
if MessageDlg('Вы действительно хотите
выйти?',mtWarning,[mbYes,mbNo],0)=mrYes then
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s1: string;
s2: string;
begin
x1:=strtofloat (edit1.text);
s1:='+';
if (edit1.Text <>s1) then
begin
s2:=edit1.Text;
x2:=strtofloat (s2);
end;
y:=x1+x2;
edit1.text:=floattostr (y);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
x1:=strtofloat (edit1.Text);
s1:='-';
end;
procedure TForm1.Button5Click(Sender: TObject);
var
s1: string;
begin
s1:=edit1.text;
edit1.text:='';
x1:=strtofloat (s1);
y:=sin (x1);
edit1.text:=floattostr (y);
edit1.setfocus;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
s1: string;
begin
s1:=edit1.text;
x1:=strtofloat (s1);
edit1.text:='';
y:=cos (x1);
edit1.text:=floattostr (y);
edit1.setfocus;
end;
procedure TForm1.Button7Click(Sender: TObject);
var
s1: string;
begin
s1:=edit1.text;
edit1.Text:='';
x1:=strtofloat (s1);
y:=sqrt (x1);
edit1.SetFocus;
edit1.Text:=floattostr (y);
end;
procedure TForm1.Button8Click(Sender: TObject);
var
s1: string;
begin
s1:=edit1.text;
edit1.text:='';
x1:=strtofloat (s1);
y:=sqr (x1);
edit1.text:=floattostr (y);
edit1.setfocus;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text:='';
edit1.SetFocus;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var buf:string;
s1: string;
s2: string;
begin
case key of
'0'..'9',chr(8):
s1:=edit1.text;
'+': begin
x1:=strtofloat (s1);
edit1.Text:='';
edit1.SetFocus;
if (edit1.Text ='') then
s2:='';
if (edit1.Text <>'') then
s2:=edit1.text;
s2:=edit1.text;
end;
end;
end;
end.
Привет, Леонид!
Вот когдато писал аналогичную программу, исходник и скомпилированную
программу берите здесь
http://rghost.ru/33472681
--
Удачи!