Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Постоянно выскакивает ошибка   Найти похожие ветки 

 
pro_xaoc ©   (2010-03-22 08:43) [0]

Люди кто может разобраться, просто я новичок в Дельфи. Дело в том что созданная мной программа без проблем компилируется и работает. В общем ошибка выглядит в таком виде: Proeject Project1.exe raised exception class EConvertError with meesage "Здесь любой текст" is not a valid integer value". Process stopped. Use Step or Run to continue.
Эта ошибка выходит после нажатия кнопки. Вот собственно часть текста программы в котором как я думаю есть ошибка:

procedure TForm1.Button15Click(Sender: TObject);
var
result : integer;
begin
result := strtoint(edit1.text);
edit1.Text := edit1.text  +  button15.Caption + inttostr(result);
end;


 
oldman ©   (2010-03-22 08:48) [1]


> strtoint(edit1.text);


В Edit в этот момент НЕ ЧИСЛО!


 
oldman ©   (2010-03-22 08:51) [2]

Что, так сложно "is not a valid integer value" на русский перевести?


 
Anatoly Podgoretsky ©   (2010-03-22 09:15) [3]

Инвалид


 
pro_xaoc ©   (2010-03-22 09:20) [4]


> > strtoint(edit1.text);В Edit в этот момент НЕ ЧИСЛО!

да, знаю что не число, и именно поэтому я написал функцию для преобразования строки в число.
Кто может помочь?


 
Anatoly Podgoretsky ©   (2010-03-22 09:24) [5]


> функция для преобразования строки в число.

Давно существует, это strtoint


 
pro_xaoc ©   (2010-03-22 09:31) [6]

Ну я же написал уже strtoint перед edit1.text, вот терь не знаю что ему ещё не хватает, люди плз кто знает, помогите в чем дело?


 
Бетмен   (2010-03-22 09:33) [7]


> Кто может помочь?

Ну конечно же Бетмен!

procedure TForm1.Button15Click(Sender: TObject);
var result : integer;
begin
   if TryStrToInt(Edit1.Text, result)
   then edit1.Text := edit1.text  +  button15.Caption + inttostr(result)
   else edit1.Text := edit1.text  +  button15.Caption + " не число";
end;


 
pro_xaoc ©   (2010-03-22 09:49) [8]

СПС Бетмен, но у меня выходит второй вариант, т.е. "не число". Кароч я хотел создать типо калькулятор, к каждой кнопке присвоил caption 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. Также есть кнопка / * - + и =. Вот когда я нажимаю на одну из кнопок то в edit1.text появляется собственно caption нажатой кнопки. Например нажал на кнопку "2" "+" "3", а потом нажимаю на "=". Вот он должен был мне возвратить 2+3=5, а он этого не делает и вместо выходит ошибка... Кто понимает, в чем тут проблема? Если надо, вот полный код:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   Button5: TButton;
   Button6: TButton;
   Button7: TButton;
   Button8: TButton;
   Button9: TButton;
   Button10: TButton;
   Edit1: TEdit;
   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;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button1.Caption;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button2.Caption;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button3.Caption;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button4.Caption;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button5.Caption;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button6.Caption;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button7.Caption;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button8.Caption;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button9.Caption;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button10.Caption;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button11.Caption;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button12.Caption;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button13.Caption;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
edit1.Text :=edit1.text  +  button14.Caption;
end;

procedure TForm1.Button15Click(Sender: TObject);
var
result : integer;
begin
if TryStrToInt(Edit1.Text, result)
  then edit1.Text := edit1.text  +  button15.Caption + inttostr(result)
  else edit1.Text := edit1.text  +  button15.Caption + " не число";
end;

end.


 
Бетмен   (2010-03-22 09:58) [9]

Мама миа... <садится в бетмобиль и резко жмет на газ>

PS: В интернете куча примеров. Скачайте простенький калькулятор и разберитесь - как он работает.

http://nova.rambler.ru/srch?query=%D0%BA%D0%B0%D0%BB%D1%8C%D0%BA%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80+%D0%BD%D0%B0+Delphi+%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8&old_q=%D0%BA%D0%B0%D0%BB%D1%8C%D0%BA%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80+%D0%BD%D0%B0+Delphi


 
pro_xaoc ©   (2010-03-22 10:17) [10]

лан спс, так и сделаю, но хотелось бы самому понять.


 
oldman ©   (2010-03-22 10:26) [11]


> но хотелось бы самому понять


Знаешь, что такое стек и "обратная польская запись"?
Захотел в лоб strtoint("2+3") получить... ха-ха...


 
brother ©   (2010-03-22 10:26) [12]

> Например нажал на кнопку "2" "+" "3", а потом нажимаю на
> "=". Вот он должен был мне возвратить 2+3=5, а он этого
> не делает и вместо выходит ошибка...

все верно ведь: 2+3= не является яислом...
тебе надо распарсить строку и вывести результат...


 
Бетмен   (2010-03-22 10:31) [13]

Зачем парсить? Просто запоминать - первое число, операция, второе число. Выполняем операцию - получаем новое первое число. Ну а с корнем просто: первое число, операция = первое число.


 
brother ©   (2010-03-22 10:32) [14]

> Зачем парсить?


> 2+3=5


 
pro_xaoc ©   (2010-03-22 10:35) [15]

что такое парсить? (извините тупого новичка) я понимаю это как преобразовать, если это так, то я же сделал преобразование сначала строку в целое, а потом результат преобразовал в строку.


 
Бетмен   (2010-03-22 10:36) [16]

Сначала пользователь все равно нажмет 2, потом "плюс" а потом 3. Там же автор кнопки делает. Просто парсил - это муторно и займет несколько часов. Если человек не умеет использовать Sender, он врят ли напишет парсер.


 
pro_xaoc ©   (2010-03-22 10:39) [17]

ок, скачал исходник калькулятора, терь сижу и разбираю ...


 
Anatoly Podgoretsky ©   (2010-03-22 11:05) [18]

> pro_xaoc  (22.03.2010 10:39:17)  [17]

Не разбирать надо, а переименовать и about сменить, и далее сдать работу.


 
{RASkov} ©   (2010-03-22 11:10) [19]

> [17] pro_xaoc ©   (22.03.10 10:39)

Лучше книжку какую для начала скачай....(или купи), а так только запутаешься...


 
Плохиш ©   (2010-03-22 11:23) [20]


> Лучше книжку какую для начала скачай....(или купи)

это для ламеров и чайников

> а так только запутаешься

фигня крютыедермокодеры спросят на форуме, здесь обязаны им код для копи-паста дать, здесь же для этого и сидят



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.077 c
15-1266183002
Юрий
2010-02-15 00:30
2010.08.27
С днем рождения ! 15 февраля 2010 понедельник


2-1269008966
allrussia
2010-03-19 17:29
2010.08.27
Как отловить нажатие кнопки во время появления PopupMenu


9-1185113429
AlexanderMS
2007-07-22 18:10
2010.08.27
Ограждение округлой формы.


2-1272659220
Grigoriy
2010-05-01 00:27
2010.08.27
Локализация средствами интерфейса Делфи


15-1267688046
Kerk
2010-03-04 10:34
2010.08.27
dunit