Topic: Ошибка в функции ValidFloat()

Строка ',' считается числом с плавающей точкой, что на мой взгляд неверно - плавающая точка есть, а числа нет smile


procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
begin
  ShowMessage( ValidFloat(',') );
end;
Визуальное программирование: блог и телеграм-канал.

Re: Ошибка в функции ValidFloat()

k245 wrote:

Строка ',' считается числом с плавающей точкой, что на мой взгляд неверно - плавающая точка есть, а числа нет smile


procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
begin
  ShowMessage( ValidFloat(',') );
end;

то есть сама запятая считается частью числа? может, что-то вроди по умолчанию (0,0) ?

Re: Ошибка в функции ValidFloat()

Может и так, но это вводит в заблуждение. Я использовал эту функцию для парсера, чтобы определять, является ли строка числом. И получал ложные срабатывания, когда в проверяемой строке оказывалась запятая.

Визуальное программирование: блог и телеграм-канал.

4 (edited by sparrow 2022-08-02 07:59:50)

Re: Ошибка в функции ValidFloat()

И боле того. Выполняется без ошибки.


ShowMessage(FloatToStr(StrToFloat(',')));

Возвращает - 0

Возможно проверку лучше сделать через регулярные выражения?

5 (edited by vovka3003 2022-08-02 09:37:12)

Re: Ошибка в функции ValidFloat()

Вообще и делфи и лазарус подтверждают, что ',' - это "правильное" число с п.т.. Видимо так задумано...
А где надо float ловить?

Re: Ошибка в функции ValidFloat()

vovka3003 wrote:

Вообще и делфи и лазарус подтверждают, что ',' - это "правильное" число с п.т.. Видимо так задумано...
А где надо float ловить?

Ну, правильное так правильное, спорить не буду. Проверяю при подсветке исходного кода: строки и числа выделяю цветом. А тут смотрю, какая-то фигня происходит - запятые тоже подсвечиваются, как цифры. Ну, добавил ещё одну проверку, и все заработало. Но подробности будут чуть позже )))

Визуальное программирование: блог и телеграм-канал.

Re: Ошибка в функции ValidFloat()

sparrow wrote:

И боле того. Выполняется без ошибки.


ShowMessage(FloatToStr(StrToFloat(',')));

Возвращает - 0

Возможно проверку лучше сделать через регулярные выражения?

Насчет регулярных выражений вы абсолютно правы - все подобные проверки делаются именно через них. Но тут, признаюсь, я не силён в составлении условий. Тут особая сноровка нужна, а пока реализовал всё процедурно.

Визуальное программирование: блог и телеграм-канал.

8 (edited by sparrow 2022-08-02 13:30:35)

Re: Ошибка в функции ValidFloat()

Я знаю, что используется для парсинга.
Для поиска цифр последовательности это простейшее.
Нет там ничего сложного.
Есть только одно упоминание на форуме http://myvisualdatabase.com/forum/viewtopic.php?id=2953 с примером для MVD.
А вообще мощная штука. В любом языке и в SQL.
По ссылке почти все, что нужно для начала. И документация и проверка.
Можно найти расширеную документацию.
Наверное лучшее расширенное и для старта тоже. С примерами и доступное через поиск ... :
Форта Б. - Изучаем регулярные выражения - 2019
Фридл Дж. - Регулярные выражения. 3-е изд. (Бестселлеры O'Reilly) - 2018

Re: Ошибка в функции ValidFloat()

sparrow, благодарю! Буду почитать ))

Визуальное программирование: блог и телеграм-канал.