![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
В проекте несколько таймеров, которые занимаются последовательным прибавлением. Два из них должны работать с вещественным типом чисел. код первого: Код:
procedure TMainForm.Timer15Timer(Sender: TObject); begin if par = (200) then begin Timer15.Enabled:= false; exit; end; par:=par+0.1; edit4.text:= floattostr(par); end; код второго procedure TMainForm.Timer5Timer(Sender: TObject); begin if partep=(200) then begin Timer5.Enabled:= false; exit; end; partep:=partep+0.1; edit10.text:= floattostr(partep); end; Первый работает, а вот второй выдает ошибку: Project Project 1 .exe raised exception class EConvertError with message "0.1" Is not a valid integer value1. Process stopped. Use Step or Run to continue. Последний раз редактировалось Admin, 30.04.2012 в 17:58. |
|
#2
|
||||
|
||||
|
с типами напутал
|
|
#3
|
|||
|
|||
|
так что напутал?
у меня partep=real и par=real |
|
#4
|
|||
|
|||
|
Цитата:
А какой разделитель дробной части у тебя стоит в системе? Не запятая случаем? Соотвсественно, компилятор и ругается. |
|
#5
|
|||
|
|||
|
Нет, стоит точка. И ругань происходит в уже скомпилированной проге, как только дело доходит до включения вышеуказанного таймера.
Отладчик тыкает в строку Код:
edit10.text:= floattostr(partep); Последний раз редактировалось utro35, 01.05.2012 в 00:08. |
|
#6
|
||||
|
||||
|
Ну если с разделителем, как уверяешь, всё верно, значит в переменной находится не совсем то, что нужно.
|
|
#7
|
|||
|
|||
|
Цитата:
Это как??? Цитата:
Не понял, что подразумевается под этим, что за система имеется ввиду? Последний раз редактировалось utro35, 01.05.2012 в 01:30. |
|
#8
|
||||
|
||||
|
Тебе видней. У меня этот код ошибки не вызывает:
Код:
var
Par : Single = 0;
Partep : Single = 0;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
if par = 200 then
begin
Timer2.Enabled:= false;
Exit;
end;
par := par + 0.1;
Edit2.Text := FloatToStr(par);
end;
procedure TForm4.Timer2Timer(Sender: TObject);
begin
if partep = 200 then
begin
Timer1.Enabled := False;
Exit;
end;
partep := partep + 0.1;
Edit3.Text := FloatToStr(partep);
end; |
|
#9
|
|||
|
|||
|
Вот блин, нашел ошибку: на одном из обработчиков злосчастный эдит проверялся как integer
|
|
#10
|
|||
|
|||
|
Исправил, однако теперь дебуггер выдает ту же ошибку на строке
MainForm.ShowModal, но уже в другом юните |
|
#11
|
||||
|
||||
|
ну так код выкладывай.
|
|
#12
|
|||
|
|||
|
Цитата:
Еще в одном месте нашел его как integer Большое спасибо за участие! |
|
#13
|
||||
|
||||
|
Цитата:
Цитата:
![]() |