Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.07.2014, 10:54
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию Преобразования, полный ступор программы

Народ, очень волнует такой вопрос, помогите кто сталкивался, есть программа, в ней туева куча преобразований типа 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  
Старый 30.07.2014, 11:10
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Есть StrToFloatDef.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 30.07.2014, 11:24
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

интересная функция, буду знать
но может у кого то есть еще идеи?

strtofloatdef не всегда удобно

[dcc32 Error] Unit1.pas(4343): E2250 There is no overloaded version of 'StrToFloatDef' that can be called with these arguments
Ответить с цитированием
  #4  
Старый 30.07.2014, 11:46
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

есть еще вариант все проверять сперва на 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  
Старый 31.07.2014, 01:29
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Цитата:
Сообщение от hilaryon
на любую ошибку пишет "ошибка, ну и хрен с ней"
Это может означать: "Ошибка, ну и хрен с ней, буду делать хрен знает что", что пугает.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #6  
Старый 31.07.2014, 05:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Есть еще TryStrToInt & TryStrToFloat.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter