Перейти к содержанию

"Написал" нерабочий калькулятор на Delphi 7, как сделать чтоб был рабочий?


Рекомендуемые сообщения

Маты начинаются сразу со строчки

procedure TForm1.Button1Click(Sender: TObject);

причина

Unit1.pas(53): Statement expected but 'PROCEDURE' found

понятия не имею что это значит, с Delphi работаю второй раз в своей жизни, качал отсюда.

Меня терзают смутные сомененья что у меня в коде косяк на косяке сидит, и косяком погоняет.

Помогите исправить пожалуйста.



interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Panel1: TPanel;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i,p,r:real;
mode:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+1
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+2
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+3
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+4
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+5
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+6
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+7
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+8
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+9
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+0
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=2;
Panel1.Caption:='';
end;
procedure TForm1.ButtonD13Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=3;
Panel1.Caption:='';
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=4;
Panel1.Caption:='';

procedure TForm1.Button11Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=1;
Panel1.Caption:='';
end;

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;
end.
unit Unit1;

Ссылка на комментарий

Я второй раз в жизни пользуюсь, ни черта не умею, мне бы с объяснениями

Innk как бы пытался обработать событие "OnClick".

Ссылка на комментарий

В конце кода, перед

end.

нужно написать:


end; // закрытие case mode of
end; // закрытие procedure TForm1.ButtonClick(Sender: TObject);

а все выражения, такие как:

Panel1.Caption:=Panel1.Caption+1

нужно заменить на

Panel1.Caption:=Panel1.Caption+'1'

т.к. свойство Caption - строкового типа, а 1 - числового, но, текст, заключенный в апострофы является строкой.

Насчет begin - end, можешь посчитать их, должно быть одинаковое количество :yes:

Ссылка на комментарий
Innk сделал, но теперь он выделяет "end" и выдает
Unit1.pas(55): Incompatible types: 'String' and 'Integer'

Несоответствие типов тоже убери (FloatToStr, StrToFloat)

Ссылка на комментарий

Innk, в программировании я как Санёк во всем остальном. Мне желательно все по полочкам разложить.

Как я понимаю процедура "FloatToStr" переводит числовое значение в строковое т.е '231' в просто 231?

А процедура "StrToFloat" делает все с точностью до наоборот?

Ссылка на комментарий

Все, оно заработало=)

Вот так это выглядит:



interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Panel1: TPanel;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i,p,r:real;
mode:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'1'
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'2'
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'3'
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'4'
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'5'
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'6'
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'7'
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'8'
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'9'
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Panel1.Caption:=Panel1.Caption+'0'
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=2;
Panel1.Caption:='';
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=3;
Panel1.Caption:='';
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=4;
Panel1.Caption:='';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
i:=StrToFloat(Panel1.Caption);
mode:=1;
Panel1.Caption:='';
end;

procedure TForm1.Button15Click(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;

end;
end;
end.
unit Unit1;

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...