Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2010, 10:15   #11
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию в чём смысл!

1) Видимо, я полез не в ту степь. Дело в том, что '12-2' действительно числом не является, так вот смысл весь этой конструкции с траем и экспектом ( try - excpet) был в том, чтобы проверить - является ли строка числом (процедура рекурсивная- раскладывает выражение по дереву,поэтому рано или поздно она вызовется именно для числа) . Вот в чём дело. Как же я тогда могу проверить , что строка , например, "s" является числом? если s- типа string и s='12' ?
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 11.05.2010, 10:38   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как же я тогда могу проверить , что строка , например, "s" является числом?
Мой любимый вариант
Код:
uses Dialogs;
var 

  I, Code: Integer;
begin
  { Get text from TEdit control }
  Val(Edit1.Text, I, Code);
  { Error during conversion to integer? }
  if Code <> 0 then
    MessageDlg('Error at position: ' + IntToStr(Code), mtWarning, [mbOk], 0);
  else
    Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));
end;
Это из хелпа или
Код:
 if TryStrToFloat(s,i) then в i число
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.05.2010, 11:04   #13
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Кстати, vedro-compota, ошибка о которой мы говорим вылазиет только в самой Delph'е. Ето нужно, чтобы на этапке разработки и тестирования программист видел все ошибки. А если вы запустите откомпелированный EXE-шник, скажем из архива 5-5-1.zip, сам по себе, то ошибки не будет. Точнее исключение возникнет, но оно не будет обработано соответствующим образом.
Sibedir вне форума Ответить с цитированием
Старый 11.05.2010, 11:10   #14
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию ага

то есть , чисто теоретически способ, который я пытался применить не лишён смысла! ))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 11.05.2010, 11:14   #15
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Вполне

Но О-О-ОЧЕНЬ не красивый
Sibedir вне форума Ответить с цитированием
Старый 11.05.2010, 11:25   #16
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Наверное, вы правы ))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 11.05.2010, 13:28   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

vedro-compota, ты смотрел предложенную тебе функцию? Ее результат Boolean. Угадай зачем?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 11.05.2010, 13:31   #18
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию я прав?

пробую угадать...............чтобы не возникало ошибки !
-------------------------------------
а почему в функции
Код:
Val(Edit1.Text, I, Code);
три параметра ?
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 11.05.2010 в 13:33.
vedro-compota вне форума Ответить с цитированием
Старый 11.05.2010, 13:51   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от vedro-compota Посмотреть сообщение
пробую угадать...............чтобы не возникало ошибки !
-------------------------------------
Не зачет. Не угадывать надо, а посмотреть описание данной функции и все.

Цитата:
а почему в функции
Код:
Val(Edit1.Text, I, Code);
три параметра ?
Собственно и ответ такой же . http://www.delphibasics.ru/Val.php
Есть справочники, тебе дали имя функции, есть гугл с примерами. Что еще нужно для решения задачи?

Ну и вообще по ошибкам http://www.delphikingdom.com/asp/vie...392&mode=print
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 11.05.2010 в 13:56.
Utkin вне форума Ответить с цитированием
Старый 11.05.2010, 17:12   #20
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Цитата:
Procedure Val(S; Var V; Var Code : Integer);

Где:
S - переменная со строковым типом. Должна представлять
последовательность символов, формирующих знаковое целое число.
V - переменная типа Real или Integer
Code - переменная типа Integer
- это про val . А вот про трай :
Цитата:
Цитата (JetAPI @ 11.05.08, 21:59)
Но это же "коряво"!!!!!!!
Думаю, что можно как-то применить эту конструкцию, try-except-end;
А как правильно не знаю. Создается же класс EConvertError

"Коряво" использовать исключения там, где можно без них обойтись, т.к. генерация и обработка исключения занимает уйму времени и ресурсов процессора и ОС

Цитата (JetAPI @ 11.05.08, 21:59)
Цитирую из справочника:
---------------------------
Если строка не может быть преобразована, генерируется исключительная ситуация EConvertError

Функции IntToStr,IntToStrDef и TryStrToInt используют для преобразования строки в число одну и ту же процедуру Val, но в сл.ошибки ведут себя по разному. IntToStr генерит исключение EConvertError, а IntToStrDef и TryIntToStr никаких исключений не вызывают. Поэтому не нужно зацикливаться только на IntToStr и EConvertError, а в завис-ти от задачи использовать наиболее подходящий вариант преобразования. В данном случае догичнее использовать Val или TryStrToInt:
Код:
if not TryStrToInt(Edit1.Text,number) then
begin
  ShowMessage('Введено недопустиое значение. Повторите ввод.');
  Edit1.SetFocus();
  Exit;
end;
это на другом вот форуме народ обсуждал. Так значит я прав - TryStrToInt не генерирует сообщения об ошибке.
поставьте зачёт !
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 11.05.2010 в 17:19.
vedro-compota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение об ошибке ruavia3 Microsoft Office Excel 3 13.10.2009 23:10
Сообщение об ошибке Kreadlling Общие вопросы C/C++ 3 08.09.2009 13:30
Сообщение об ошибке! QWERT1988 Общие вопросы Delphi 4 01.06.2009 17:14
Сообщение об ошибке при вводе неверного типа информации в DBEdit megaten БД в Delphi 6 17.05.2009 20:44
Перехватить сообщение об ошибке Insainer Общие вопросы Delphi 5 25.04.2008 20:39