Постоянно выскакивает ошибка
Proeject Project1.exe raised exception class EConvertError with message "Здесь любой текст' 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;
Вам ни о чём не говорит? Скорее всего edit1.text не всегда содержит только цифры.;)
Proeject Project1.exe raised exception class EConvertError with message "Здесь любой текст' is not a valid integer value'. Process stopped. Use Step or Run to continue.
Здесь, я так думаю, все таки не любой текст, а текст который вы записали в edit1? :) Это стандартная ситуация, называется "криворукий пользователь программы, который вводит всякую чушь". Вы используете текст из Edit1 как число целого типа, производя соотевтствующие преобразования. При этом, так как преобразования не удались, программа падает в ошибку. Для устранения таких ошибок есть два пути:
1. Перехватывать неправильный ввод и ругать пользователя.
Для этого можно использовать например такой код
[highlight=delphi]
try
i:=strtoint(s);
...
except
on E:EConvertError do
MessageBox(0,'Введеное значение не является целым числом!',0,0);
end;
[/highlight]
2. Не дать пользователю ввести неправильные данные. Это можно сделать по разному - использовать специальные компоненты, запретить ввод пользователем неправильных символов с помощью обработки событий вроде onKeyPress. Если выберете это - то в поиск, на форуме не раз обсуждалось.
result := strtoint(edit1.text), после этого, result должен посчитать и присвоить значение от 2+3 и вывести на edit1.text (преобразовать целое в строку я не забыл), а он этого не делает и вместо выходит ошибка... Кто понимает, в чем тут проблема?
ну я думаю что это целое, потому что вот простой пример:
var sum : integer;
begin
sum := 5+6;
showmessage(inttostr(sum))
end;
здесь же ведь 5 + 6 считается как целое. После он отправляет его как сообщение по пути преобразуя его в строку.
в чем разница? извините если это слишком тупой вопрос, просто я в дельфи новичок.
Так, вы спросили чо за ошибка и почему. Я вам ответил. А проблема тут похоже [COLOR="Silver"]совсем в другом месте. [/COLOR]
Соизвольте хоть в хэлпе почитать что-нибудь о функции, которую вы используете. Неужели не догадываетесь, что врядли вызовом одной функции получится написать калькулятор? Посмотрите хотя бы в гугле, как делаются калькуляторы, обрабатывающие строки (и что такое префиксная-постфиксная записи).
Ужос, блин.
Upd.:
О боже!!! Что это?
var sum : integer;
begin
sum := 5+6;
showmessage(inttostr(sum))
end;
здесь же ведь 5 + 6 считается как целое. ...
в чем разница? извините если это слишком тупой вопрос, просто я в дельфи новичок.
А при чем тут новичок/не новичок в делфи??? Неужели это нужно еще и объяснять? Вы вообще понимаете разницу между константой, выражением, строкой и идентификатором? Если нет - хотя бы с этим разберитесь, а потом с Hello, World начинайте, а не с калькуляторов.