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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2018, 23:38   #1
kladsss
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 50
По умолчанию Как вместо сообщения Is not valid integer value вывести свой текст

Программа меняет все значения, со знаком (=), в порядке убывания. А когда ввожу без знака (=) то возникает ошибка.

И вот вопрос: Как, место сообщения Is not valid integer value - Вывести свой текст. К примеру, сообщение: "Внимание, вы ввели неправильные - значения".

Прикрепил картинки!...
Изображения
Тип файла: jpg 1.jpg (30.2 Кб, 34 просмотров)
Тип файла: jpg 2.jpg (53.5 Кб, 39 просмотров)
kladsss вне форума Ответить с цитированием
Старый 23.04.2018, 23:57   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Смотрите try except.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.04.2018, 00:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Смотрите try except.
или заменить в коде функцию StrToInt() на функцию TryStrToInt()
(только заменить не механически - это другая функция, с двумя параметрами, которая возвращает логическое выражение - удалось ли корректно преобразовать строку в число (True) или нет (вернётся False).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.04.2018, 00:27   #4
kladsss
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Смотрите try except.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
или заменить в коде функцию StrToInt() на функцию TryStrToInt()
(только заменить не механически - это другая функция, с двумя параметрами, которая возвращает логическое выражение - удалось ли корректно преобразовать строку в число (True) или нет (вернётся False).
Ребята! Человеческое спасибо!

Сделал так:
Код:
try
  L.CustomSort(MySort);
  except
  ShowMessage('Ошибка, неправильное значение');
end;
kladsss вне форума Ответить с цитированием
Старый 25.04.2018, 01:50   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Цитата:
Сообщение от kladsss Посмотреть сообщение
Сделал так:
А чем сообщение пользователю "Ошибка, неправильное значение" лучше сообщения "Is not valid integer value"?
northener вне форума Ответить с цитированием
Старый 25.04.2018, 09:51   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Дык оно ж на понятном всем рабоче-крестьянском
digitalis вне форума Ответить с цитированием
Старый 25.04.2018, 10:08   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Дык оно ж на понятном всем рабоче-крестьянском
этого мало. Абсолютно непонятно что означает "неправильное значение" (дробное, отрицательное, больше миллиона).. и, главное, непонятно где именно это самое "значение". Особенно актуально с учётом того, что такая ошибка возникает при попытке конвертировать в целое ПУСТУЮ строку.

Хорошее сообщение об ошибке должно информировать пользователя о том, какая именно ошибка произошла, что именно привело к этой ошибке (где она конкретно возникла или какой объект причина ошибки) и что нужно сделать пользователю, чтобы исправить ситуацию.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.04.2018, 10:30   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Но тогда уж try except не помощники. Перед преобразованием надо "вручную" парсить желаемую преобразовать строку.
digitalis вне форума Ответить с цитированием
Старый 25.04.2018, 10:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Но тогда уж try except не помощники. Перед преобразованием надо "вручную" парсить желаемую преобразовать строку.
это с чего вдруг?!!
Вы вообще эту тему читали?
во-первых, можно использовать TryStrToInt()
во-вторых, можно использовать Try.. except - только нужно им обернуть не полпрограммы, а конкретно тот участок кода, где происходит конвертация.
Если Вы намекаете на то, что try except не может определить, какая ошибка возникла, то Вы ошибаетесь - см. конструкцию on E: EConvertError do

ну и последнее, если всё это по каким-то религиозным причинам не устраивает, то есть добрая старая (олдскульная ) процедура Val().

p.s. речь шла не о том, что автор использовал try except, а в том, что он
1) использовал его слишком глобально
2) сообщение ничем не лучше системного сообщения (ну, кроме русского языка).

впрочем, автора это решение, похоже, вполне устраивает.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.04.2018, 11:32   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Увы... Mea maxima culpa ...
digitalis вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
is not valid integer value roma88gruzd88 Помощь студентам 4 16.10.2013 13:41
как заменить фразу is not a valid integer value Richik123 Помощь студентам 6 22.11.2012 22:23
Is not a valid integer value [Jank] Общие вопросы Delphi 11 18.09.2012 16:36
is not a valid integer value AFA Помощь студентам 41 15.03.2012 20:29
is not a valid integer value FanRa3 Общие вопросы Delphi 10 26.07.2011 19:54