|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразования, полный ступор программы
Народ, очень волнует такой вопрос, помогите кто сталкивался, есть программа, в ней туева куча преобразований типа strtofloat strtoint
если каким то макаром попадает не корректная строка для преобразования, программа выдает ошибку и полностью ступорится, вплоть до диспетчера задач. Это ппц, вот пример Код:
try sGauge1.MaxValue:=abs(round(strtofloat(sEdit3.Text))); except on EConvertError do begin sGauge1.MaxValue:=1200; end; или Код:
for I := 1 to sg.RowCount-1 do begin if sg.Cells[0,i]='' then Continue; try sumgr:=sumgr+strtofloat(sg.Cells[2,i]); sumday:=sumday+strtofloat(sg.Cells[6,i]); if (sg.Cells[9,i]<>'')and(sg.Cells[9,i]<>' ') then gn:=gn+strtofloat(sg.Cells[9,i]); if sg.Cells[8,i]<>'' then sumxe:=sumxe+strtofloat(sg.Cells[8,i]); belki1:=belki1+strtofloat(sg.Cells[3,i]); jirki1:=jirki1+strtofloat(sg.Cells[4,i]); uglevodi1:=uglevodi1+strtofloat(sg.Cells[5,i]); except on Exception : EConvertError do ShowMessage(Exception.Message); end; end; Посоветуйте как быть, желательно чтобы не оборачивать каждое преобразование в эксепты, чтобы можно было что-то прописать в приложении чтобы оно не уходило в даун при ошибках а просто шло дальше Интересуюсь для своей программы http://hiki-soft.ru/ калькулятор калорий можно скачать поглядеть на нее Последний раз редактировалось hilaryon, 30.07.2014 в 12:18. |
#2
|
||||
|
||||
Есть StrToFloatDef.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
интересная функция, буду знать
но может у кого то есть еще идеи? strtofloatdef не всегда удобно [dcc32 Error] Unit1.pas(4343): E2250 There is no overloaded version of 'StrToFloatDef' that can be called with these arguments |
#4
|
|||
|
|||
есть еще вариант все проверять сперва на val
Код:
val(memo1.Lines[14],v,err); if err=0 then begin form1.sEdit7.Text:= memo1.Lines[14]; limvod:=strtofloat( memo1.Lines[14]); end else limvod:=1499; но это честно говоря ппц ( в программе таких преобразований просто море, есть способы как-то упростить задачу? в одной программе видел такое что на любую ошибку пишет "ошибка, ну и хрен с ней" и программа не зависает ниразу. |
#5
|
||||
|
||||
Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#6
|
|||
|
|||
Есть еще TryStrToInt & TryStrToFloat.
|