Цитата:
Сообщение от anghela
Нужно сделать проверку поля: данные - это числа или нет.
Написала такой код:
Код:
1 2 3 4 5 6 | 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.
А ещё лучше в цикле пройдись по строке и при встрече с любым нецифровым символом прерывайся с сообщением об ошибке.