| 
| 
 | Вопрос # 3 111/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Чтобы защититься от вылета по неправильному заполнения входных данных, предпринял стандартное, как мне казалось, действие :  <Пример 1> см. аттач. Результат никакой - ругается в окошко, что данные неправильные.
 
 
 Думаю, может эта проверка может включается - отключается в опциях компилятора?  Пересмотрел все, что было под рукой, и ничего не нашел. Да и по логике : если есть такой обработчик искл. ситуации, то он ее обрабытывает, а нет - стандартная реакция. Но - не работает.
 В одном Helpe, который у меня числится как kuliba2000.chm, нашел такой вариант : <Пример 2.>
 Это укрепило меня в мысли, что нечего надеяться на try, а нужно писать свой простой фильтр входной инф.
 Приложение:Переключить в обычный режим    try    i := StrToInt (EdAd.Text) ; except    on EConvertError do i := -1 ; end ;        -----------------------------------------------------------    procedure MyException(Sender:TObject; E:Exception);  --------------------------------------------------------    procedure TMyForm.MyException(Sender:TObject; E:Exception);begin if (E.ClassType.ClassName='EConvertError') thenbegin end end;    --------------------------------------------------------    procedure TMyForm.FormCreate(Sender: TObject);begin Application.OnException := MyException; end; 
|  |   Вопрос задал: Яуген Таляныч (статус: Посетитель)Вопрос отправлен: 22 августа 2009, 17:53
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Не буду говорить тут эпитетов типа "хорош хренотенью занимаццо", а скажу, как делаю я.В таких случаях я просто юзаю функцию TryStrToInt(). В модуле SysUtils.pas подобных функций полно:
 
 Цитата: TryEncodeDate function
 
 Creates a TDateTime value that represents a specified Year, Month, and Day.
 
 TryEncodeTime function
 
 Creates a TDateTime value for a specified Hour, Min, Sec, and MSec.
 
 TryFloatToCurr function
 
 Converts a floating-point value to a Currency value.
 
 TryFloatToDateTime function
 
 Converts a floating-point value to a TDateTime value.
 
 TryStrToBool function
 
 Converts a string to a Boolean value, with a Boolean success code.
 
 TryStrToCurr function
 
 Converts a string to a Currency value, with a Boolean success code.
 
 TryStrToDate function
 
 Converts a string to a TDateTime value, with a Boolean success code.
 
 TryStrToDateTime function
 
 Converts a string to a TDateTime value with a Boolean success code.
 
 TryStrToFloat function
 
 Converts a given string to a floating-point value with a boolean success code.
 
 TryStrToInt function
 
 Converts a string that represents an integer (decimal or hex notation) to a number with Boolean success code.
 
 TryStrToInt64 function
 
 Converts a string that represents an integer (decimal or hex notation) to a number.
 
 TryStrToTime function
 
 Converts a string to a TDateTime value with an error default.
 
 
 Судя по контексту вопроса, это именно то, что тебе и нужно.
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 22 августа 2009, 18:25
 Оценка за ответ: 4
 Комментарий к оценке: Я дельфист начинающий, потому иногда мои попытки напоминают тень от этого растения. Указанные функции попробую. Но ворос остался открытым - почему штатная фича не работает. Для себя я проблему решил, и моя п/п, разобравшись, какая кодировка, сама переводит стоку каr Hex, так и Int, и только если уж совсем наворочено, выдает Error. |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 23 августа 2009, 13:13; участников в обсуждении: 1. 
|   | lx (статус: Посетитель), 23 августа 2009, 13:13 [#1]:потому что надо отключить в настройках ide вылеты про обработке исключений. запусти свою программу не из под ide - всё будет нормально. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |