Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Преобразоавние str во float


Автор: Syrex 27.9.2006, 13:59
Как установить по умолчанию в программе разделитель целой и дробной части ','???

Автор: Никто 27.9.2006, 14:14
Как это относится к называнию темы.

Автор: Syrex 27.9.2006, 14:17
После преобразования sum=StrToFloat(sum_text)
я пытаюсь занести  sum в базу данных парадокса. И иногда вылетает сообщение EConvertError. Так как парадокс воспринимает в виде разделителя только запятую.
А каждый раз менять в настройках винды разделитель с "." на "," геморойно!

Автор: Alexeis 27.9.2006, 14:34
Код

DecimalSeparator = ',';

Автор: Romikgy 27.9.2006, 14:56
в дельфи так и работает всегда
Код

sx:='32.32';
sx:=StringReplace(sx,'.', DecimalSeparator,[rfReplaceAll]);
sx:=StringReplace(sx,',', DecimalSeparator,[rfReplaceAll]);
fl:=StrToFloat(sx);

Автор: Syrex 27.9.2006, 14:56
Всё равно не получается. Если по умолчанию стоит английский язык - то вводится разделителем точка

Автор: Vyacheslav 27.9.2006, 15:02
А почему просто не писать в базу  непосредственно float, если дело в парадоксе

Автор: Romikgy 27.9.2006, 15:05
Syrex, ты че шютник 
Цитата(Romikgy @  27.9.2006,  13:56 Найти цитируемый пост)
sx:=StringReplace(sx,'.', DecimalSeparator,[rfReplaceAll]);
sx:=StringReplace(sx,',', DecimalSeparator,[rfReplaceAll]);

после такого в любом случае работать будет , если конечно текстовый флоат правельный

Автор: Vyacheslav 27.9.2006, 15:14
Да похоже, что там проблема не правильно локализована
Цитата(Syrex @  27.9.2006,  14:17 Найти цитируемый пост)
После преобразования sum=StrToFloat(sum_text)

То есть перевод строки во  Extended прошло нормально. Разделитель тут не причем
Цитата(Syrex @  27.9.2006,  14:17 Найти цитируемый пост)

я пытаюсь занести  sum в базу данных парадокса. И иногда вылетает сообщение EConvertError. Так как парадокс воспринимает в виде разделителя только запятую.

То есть, когда полю присваивается Extended value вылетает  EConvertError.
Я не специалист по парадоксу, но напрашивается следущее:
какакой тип поля таблицы и может ли вообще Extended быть преобразован кк типу, который требуется для  данного поля?


Автор: Syrex 27.9.2006, 15:24
Может я эту функцию не там прописываю??

Автор: Alexeis 27.9.2006, 15:45
Цитата(Syrex @  27.9.2006,  15:24 Найти цитируемый пост)
Может я эту функцию не там прописываю?? 

Ошибка в 17 строке.

Автор: Syrex 27.9.2006, 16:38
Цитата(Vyacheslav @ 27.9.2006,  15:02)
А почему просто не писать в базу  непосредственно float, если дело в парадоксе

Потому, что парадок воспринимает в качестве разделителя только запятую. А прога выдает точку.

Автор: Vyacheslav 27.9.2006, 16:58
Цитата(Syrex @ 27.9.2006,  16:38)
Цитата(Vyacheslav @ 27.9.2006,  15:02)
А почему просто не писать в базу  непосредственно float, если дело в парадоксе

Потому, что парадок воспринимает в качестве разделителя только запятую. А прога выдает точку.

Исправляем бардак в голове. 
Парадоксу, как и любой другой базе данных при получении float совершенно фиолетово какой знак используется в качестве разделителя по той просто причине, что во внутреннем представлении числа знак разделителя не присутствует.  
Какой знак, важно лишт при преобразовании  строки во float, но эта операция с Ваших слов проходит без проблем
Цитата(Syrex @ 27.9.2006,  14:17)
 
После преобразования sum=StrToFloat(sum_text)

Тут ключевое слов после. То есть Вы уже получили sum, в котором знак разделителя уже никак не представлен, а посему дальше должно идти банальное присвоение одного числа другому
Код

Table->FieldByName("MyField")->AsFloat = sum;



 




Автор: Romikgy 27.9.2006, 17:01
Цитата(Syrex @  27.9.2006,  15:38 Найти цитируемый пост)
только запятую

дык преобразуй точку в запятую

Автор: ShadoWolf 4.10.2006, 14:16
Зачем зацикливаться на точке и запятой, базы данных парадокс отлично воспринимают запись переменных в формате float

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)