Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как отключить ошибки при преобразовании StrToInt


Автор: Desperate 25.2.2011, 22:20
Приветствую.
Подскажите пожалуйста как избавиться от ошибки преобразования текста в число StrToInt, если например содержится символ в переменной типа String?

Чтоб программа не вылетела, а просто продолжила работу.

Автор: northener 25.2.2011, 22:30
TryStrToInt 

Автор: Desperate 26.2.2011, 02:00
Спасибо большое smile 

Кому инетересно :
Код

If  TryStrToInt(Edit1.Text,i) then edit2.Text:=inttostr(i) else   edit2.Text:='там не число!!!';

Автор: northener 26.2.2011, 02:40
Цитата(Desperate @  26.2.2011,  02:00 Найти цитируемый пост)
Кому инетересно :
Выделить всёкод Pascal/Delphi
1:
    
If  TryStrToInt(Edit1.Text,i) then edit2.Text:=inttostr(i) else   edit2.Text:='там не число!!!';


Кто-то из модераторов, (не помню кто) "настоятельно" мне не советовал использовать слово "бред" в ответах авторам.
Но как ответить "гламурно" на данное сообщение?

Добавлено через 4 минуты и 19 секунд
Цитата(Desperate @  26.2.2011,  02:00 Найти цитируемый пост)
Кому инетересно :
Выделить всёкод Pascal/Delphi
1:
    
If  TryStrToInt(Edit1.Text,i) then edit2.Text:=inttostr(i) else   edit2.Text:='там не число!!!';

Кому интересно:
Код

  If not TryStrToInt(Edit1.Text,i) then edit2.Text:='там не число!!!';

Автор: Coder 27.2.2011, 12:06
Цитата(northener @  26.2.2011,  10:40 Найти цитируемый пост)
Кому интересно:

и каким образом в edit2 попадет число?

Автор: Desperate 27.2.2011, 12:17
Цитата(northener @  26.2.2011,  02:40 Найти цитируемый пост)
Кому интересно:код Pascal/Delphi1:  If not TryStrToInt(Edit1.Text,i) then edit2.Text:='там не число!!!';


Мне по условию требовалось проверить корректное ли число в строке и если да то вывести его xls в тип числовой, иначе вывести строкой. 
В моем ответе просто для наглядности вывожу строкой число иначе тект "там не число". 

В твоем варианте только проверка и если не число то вывести сообщение иначе просто промолчать.



Автор: IamDreamer 28.2.2011, 08:04
Цитата(northener @  26.2.2011,  01:30 Найти цитируемый пост)
TryStrToInt  

А для типа Real аналог есть? Чтобы при вводе символов просто появлялось окно с ошибкой. Try except слишком кардинален...
Код

procedure TForm1.Edit4Change(Sender: TObject);
begin
if TryStrToFloat(Edit4.Text, Ra) then Ra:=StrToFloat(Edit4.Text) else MessageDlg('Îøèáêà ïðè ââîäå, íåâîçìîæíî ïðåîáðàçîâàòü â ÷èñëî', mtCustom,[mbRetry],   0);
end;

// Ra - переменная типа Real


Выдаёт ошибку 
Цитата

[Error] Unit1.pas(77): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments

Автор: CODeRUS 2.3.2011, 02:07
Условия учтены?
Первый аргумент - string
Второй аргумент - double

Да и ваш Then ни к чему. При удачном преобразовании в Ra автоматом попадет сконвертированное число

Автор: northener 2.3.2011, 02:41
Такого условия в сабже не было! Т.е. про Ёксель не было никаких упоминаний.
Цитата(Desperate @  27.2.2011,  12:17 Найти цитируемый пост)
Мне по условию требовалось проверить корректное ли число в строке


Кстати напомню о процедуре Val. 
Отлично справляется с преобразованием строки в любой "числовой" тип. Что целый, что  вещественный. 
И не вызывает никаких исключений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)