Страница 1 из 2

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

Добавлено: Сб сен 08, 2018 1:23 pm
Гocть
Про особенности хранения чисел в паскале понятно, но все же вопрос: можно ли привести в программе к какому то "общему знаменателю" нижеуказанные функции? :

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


// 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',',','.',[]);

// работает.

 

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

Добавлено: Вт окт 16, 2018 11:15 pm
kok80
пытался повторить...и все работает

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

Добавлено: Ср окт 17, 2018 8:24 am
jurist23rus
А что имеется ввиду? Ведь вся проблема в знаке разделителе целой и дробной части числа (.) или (,)

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

Добавлено: Ср окт 17, 2018 8:53 am
Гocть
В первом посте вроде подробно описал. Попробую растолковать: если мы вытаскиваем из текстового поля текст, то мы можем обработать его "как есть" вставить его обратно, если мы вытаскиваем из даты ее содержимое, то также можем работать с ним как с датой, конвертировать в текст, и без проблем преобразовать обратно в дату. Если же мы достаем из числового поля его содержимое, то обработать и вернуть мы можем с помощью манипуляций, указанных в топе.

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

Добавлено: Ср окт 17, 2018 10:07 am
Гocть
kok80 писал(а):пытался повторить...и все работает

Что все?

P.S. На всякий случай немного подправил вопрос.

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

Добавлено: Ср окт 17, 2018 12:18 pm
kok80
я так и не понял, в каком месте ошибка, приложил базу, в которой все конвертации работают

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

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;

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

Добавлено: Ср окт 17, 2018 12:20 pm
Гocть
Ну хоть кто нибудь (кроме админ'а) читал вопрос?

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

Добавлено: Ср окт 17, 2018 4:19 pm
kok80
тут хоть учитайся вопрос, но:

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

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

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

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

Добавлено: Ср окт 17, 2018 4:27 pm
Гocть
Вопрос был:
Гocть писал(а): можно ли привести в программе к какому то "общему знаменателю"?

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

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

Добавлено: Ср окт 17, 2018 7:38 pm
jurist23rus
Похоже понял один Админ, но и он не стал отвечать :)