Последняя версия DataExpress 3 beta от 9 декабря 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

[РЕШЕНО] Проверка и преобразования Str<To>Float

Здесь содержаться темы из данного форума, потерявшие свою актуальность ввиду того, что ошибка (баг) программы устранён разработчиком или данное поведение программы не являлось ошибкой и не требует вмешательства разработчика.
Аватара пользователя
Гocть
Эксперт
Сообщения: 1398
Зарегистрирован: Пн ноя 27, 2017 8:02 am

[РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение Гocть » Сб сен 08, 2018 1:23 pm

Про особенности хранения чисел в паскале понятно, но все же вопрос: можно ли привести в программе к какому то "общему знаменателю" нижеуказанные функции? :

Код: Выделить всё


// debug(FloatToStr(Self['Число'])) // = 123.450000000000 (OK)

// ОК. пробуем в обратном порядке:

  debug(TryStrToFloat('123.450000000000',F)) // false (?)

// ну хорошо. Тогда так:

  debug(TryStrToFloat('123,450000000000',F)) // = true  (OK)

// Ну раз все ОК тогда пробуем:

 Self['Число']:= StrToFloat('123,450000000000') // Exception: Invalid Float (?)

// Ладно. Тогда пробуем так:

if TryStrToFloat('123,450000000000',F) then
Self['Число']:=StringReplace('123,450000000000',',','.',[]);

// работает.

 
Фрилансер. Разработка на заказ. Консультирование.

kok80
Интересующийся
Сообщения: 81
Зарегистрирован: Пн июл 02, 2018 9:45 pm

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение kok80 » Вт окт 16, 2018 11:15 pm

пытался повторить...и все работает
Вложения
TEST.zip
(51.9 КБ) 9 скачиваний

jurist23rus
Эксперт
Сообщения: 2478
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение jurist23rus » Ср окт 17, 2018 8:24 am

А что имеется ввиду? Ведь вся проблема в знаке разделителе целой и дробной части числа (.) или (,)
Destiny is a very convenient word for those who never take decisions.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1398
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение Гocть » Ср окт 17, 2018 8:53 am

В первом посте вроде подробно описал. Попробую растолковать: если мы вытаскиваем из текстового поля текст, то мы можем обработать его "как есть" вставить его обратно, если мы вытаскиваем из даты ее содержимое, то также можем работать с ним как с датой, конвертировать в текст, и без проблем преобразовать обратно в дату. Если же мы достаем из числового поля его содержимое, то обработать и вернуть мы можем с помощью манипуляций, указанных в топе.
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1398
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение Гocть » Ср окт 17, 2018 10:07 am

kok80 писал(а):пытался повторить...и все работает

Что все?

P.S. На всякий случай немного подправил вопрос.
Фрилансер. Разработка на заказ. Консультирование.

kok80
Интересующийся
Сообщения: 81
Зарегистрирован: Пн июл 02, 2018 9:45 pm

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение kok80 » Ср окт 17, 2018 12:18 pm

я так и не понял, в каком месте ошибка, приложил базу, в которой все конвертации работают

Код: Выделить всё

procedure dxButton1_OnClick(sender: Tobject);
var f:extended;
begin
  debug('');
  debug(FloatToStr(Self.asf['Число']));
  debug(FloatToStr(Self['Число']));
  debug(StrToFloat(FloatToStr(Self.asf['Число'])));
  debug(StrToFloat('123.450000000000'));
  debug(TryStrToFloat('123.450000000000',F));

  self['текст']:=FloatToStr(Self.asf['Число']);
  self['число2']:=StrTOFloat(self.ass['текст']);
end;

procedure Form_Create;
begin
  dxButton1.OnClick:=@dxButton1_OnClick;
end;
Вложения
TEST (1).zip
(50.24 КБ) 5 скачиваний

Аватара пользователя
Гocть
Эксперт
Сообщения: 1398
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение Гocть » Ср окт 17, 2018 12:20 pm

Ну хоть кто нибудь (кроме админ'а) читал вопрос?
Фрилансер. Разработка на заказ. Консультирование.

kok80
Интересующийся
Сообщения: 81
Зарегистрирован: Пн июл 02, 2018 9:45 pm

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение kok80 » Ср окт 17, 2018 4:19 pm

тут хоть учитайся вопрос, но:

Код: Выделить всё

 debug(TryStrToFloat('123.450000000000',F)) // false (?)

у меня выдает TRUE

Аватара пользователя
Гocть
Эксперт
Сообщения: 1398
Зарегистрирован: Пн ноя 27, 2017 8:02 am

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение Гocть » Ср окт 17, 2018 4:27 pm

Вопрос был:
Гocть писал(а): можно ли привести в программе к какому то "общему знаменателю"?

Ваш вопрос (или не вопрос, не знаю): как сменить форматы чисел в системе? Ответ: в панели управления > "Язык и региональные стандарты".
Фрилансер. Разработка на заказ. Консультирование.

jurist23rus
Эксперт
Сообщения: 2478
Зарегистрирован: Пт сен 30, 2016 9:42 am
Откуда: Майкоп

Re: [РЕШЕНО] Проверка и преобразования Str<To>Float

Сообщение jurist23rus » Ср окт 17, 2018 7:38 pm

Похоже понял один Админ, но и он не стал отвечать :)
Destiny is a very convenient word for those who never take decisions.


Вернуться в «РЕШЕНО: Закрытые вопросы.»