Показать сообщение отдельно
  #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.
А ещё лучше в цикле пройдись по строке и при встрече с любым нецифровым символом прерывайся с сообщением об ошибке.
Ответить с цитированием