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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2013, 20:40
anghela anghela вне форума
Прохожий
 
Регистрация: 02.09.2013
Сообщения: 28
Версия Delphi: Delphi 7
Репутация: 9
Восклицание проверка поля на число

Нужно сделать проверку поля: данные - это числа или нет.
Написала такой код:
Код:
var  proverka_chislo:integer;
if not TryStrToInt(Edit2.Text,proverka_chislo)  then
 begin
   Showmessage('Серия и номер паспорта введены не верно');
   Exit;
 end;
Ошибку не выдает, если вводишь текст, выдает правильное сообщение, но если вводишь длинное число типа 9405698565 (мне нужно ввести в это поле серию и номер паспорта), то выводит то же сообщение, типа введены данные не правильно. Пробовала писать тип longint, результата нет.
Может кто-нибудь подскажет в чем ошибка
Ответить с цитированием
  #2  
Старый 16.11.2013, 20:52
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от anghela
Нужно сделать проверку поля: данные - это числа или нет.
Написала такой код:
Код:
var  proverka_chislo:integer;
if not TryStrToInt(Edit2.Text,proverka_chislo)  then
 begin
   Showmessage('Серия и номер паспорта введены не верно');
   Exit;
 end;
Ошибку не выдает, если вводишь текст, выдает правильное сообщение, но если вводишь длинное число типа 9405698565 (мне нужно ввести в это поле серию и номер паспорта), то выводит то же сообщение, типа введены данные не правильно. Пробовала писать тип longint, результата нет.
Может кто-нибудь подскажет в чем ошибка
Ошибка в том, что TryStrToInt возвращает ошибку в любом случае если не может преобразовать строку в целое число. Во-первых там могут быть нецифровые символы, а во-вторых полученное число превышает вместимость типа переменной. Типы Longint и Integer это фактически один и тот же тип (для Delphi 7) - занимая 4 байта могут вмещать числа не более чем $7FFFFFFF - это в 16-ричной системе счисления, что соответствует числу 2147483647 в десятичной системе счисления.
Для большей вместимости используй тип Int64 - он занимает 8 байт и максимально возможное число у него $7FFFFFFFFFFFFFFF, что в десятичной системе равно 9223372036854775807.
А ещё лучше в цикле пройдись по строке и при встрече с любым нецифровым символом прерывайся с сообщением об ошибке.
Ответить с цитированием
  #3  
Старый 16.11.2013, 21:10
anghela anghela вне форума
Прохожий
 
Регистрация: 02.09.2013
Сообщения: 28
Версия Delphi: Delphi 7
Репутация: 9
По умолчанию

спасибо, работает
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter