Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПостоянно выскакивает ошибка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.058 c