![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Постоянно выскакивает ошибка [D7, XP]
pro_xaoc © (2010-03-22 08:43:00)Люди кто может разобраться, просто я новичок в Дельфи. Дело в том что созданная мной программа без проблем компилируется и работает. В общем ошибка выглядит в таком виде: 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;
Плохиш (2010-03-22 11:23:00) [1]
> Лучше книжку какую для начала скачай....(или купи)
это для ламеров и чайников
> а так только запутаешься
фигня крютыедермокодеры спросят на форуме, здесь обязаны им код для копи-паста дать, здесь же для этого и сидят
{RASkov} (2010-03-22 11:10:00) [2]> [17] pro_xaoc © (22.03.10 10:39)
Лучше книжку какую для начала скачай....(или купи), а так только запутаешься...
Anatoly Podgoretsky (2010-03-22 11:05:00) [3]> pro_xaoc (22.03.2010 10:39:17) [17]
Не разбирать надо, а переименовать и about сменить, и далее сдать работу.
pro_xaoc (2010-03-22 10:39:00) [4]ок, скачал исходник калькулятора, терь сижу и разбираю ...
Бетмен (2010-03-22 10:36:00) [5]Сначала пользователь все равно нажмет 2, потом "плюс" а потом 3. Там же автор кнопки делает. Просто парсил - это муторно и займет несколько часов. Если человек не умеет использовать Sender, он врят ли напишет парсер.
pro_xaoc (2010-03-22 10:35:00) [6]что такое парсить? (извините тупого новичка) я понимаю это как преобразовать, если это так, то я же сделал преобразование сначала строку в целое, а потом результат преобразовал в строку.
brother (2010-03-22 10:32:00) [7]> Зачем парсить?
> 2 +3 =5
Бетмен (2010-03-22 10:31:00) [8]Зачем парсить? Просто запоминать - первое число, операция, второе число. Выполняем операцию - получаем новое первое число. Ну а с корнем просто: первое число, операция = первое число.
oldman (2010-03-22 10:26:00) [9]
> но хотелось бы самому понять
Знаешь, что такое стек и "обратная польская запись"?
Захотел в лоб strtoint("2+3") получить... ха-ха...
brother (2010-03-22 10:26:00) [10]> Например нажал на кнопку "2" "+" "3", а потом нажимаю на
> "=". Вот он должен был мне возвратить 2+3=5, а он этого
> не делает и вместо выходит ошибка...
все верно ведь: 2+3= не является яислом...
тебе надо распарсить строкуи вывести результат...
pro_xaoc (2010-03-22 10:17:00) [11]лан спс, так и сделаю, но хотелось бы самому понять.
Бетмен (2010-03-22 09:58:00) [12]Мама миа...
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 09:49:00) [13]СПС Бетмен, но у меня выходит второй вариант, т.е. "не число". Кароч я хотел создать типо калькулятор, к каждой кнопке присвоил 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:33:00) [14]
> Кто может помочь?
Ну конечно же Бетмен!
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:31:00) [15]Ну я же написал уже strtoint перед edit1.text, вот терь не знаю что ему ещё не хватает, люди плз кто знает, помогите в чем дело?
Anatoly Podgoretsky (2010-03-22 09:24:00) [16]
> функция для преобразования строки в число.
Давно существует, это strtoint
pro_xaoc (2010-03-22 09:20:00) [17]
> > strtoint(edit1.text);В Edit в этот момент НЕ ЧИСЛО!
да, знаю что не число, и именно поэтому я написал функцию для преобразования строки в число.
Кто может помочь?
Anatoly Podgoretsky (2010-03-22 09:15:00) [18]Инвалид
oldman (2010-03-22 08:51:00) [19]Что, так сложно "is not a valid integer value" на русский перевести?
oldman (2010-03-22 08:48:00) [20]
> strtoint(edit1.text);
В Edit в этот момент НЕ ЧИСЛО!