|
Вопрос # 5 074/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Для хранения данных использую ini-файлы (класс TMemIniFile)
в основном использую методы для записи/загрузки чисел (ReadFloat)
в основном все дробные данные записывались в файл через запятую (Value= 0,0105)
Возникла такая проблема:
На некоторых ПК стоит аглийкий вариант ввода, и все данные записываются через точку(Value= 0.0105)
Соответственно, возникает проблема переносимости данных.
Что можно сделать, если нельзя изменить настройки ОС Windows (пользователь использует так настроеную систему для других программ)??
Очень нужен ваш совет. Спасибо
 |
Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 8 марта 2011, 16:38
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 12 марта 2011, 11:50; участников в обсуждении: 4.
|
min@y™ (статус: Доктор наук), 8 марта 2011, 18:34 [#1]:
В любом случае числа - это набор байтов. Вот так его и храни. Для extended будет 10 байт. Очень поможет директива absolute. Научить или сам справишься?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 8 марта 2011, 20:34 [#2]:
Вздор, INI придумали для того, чтобы не хранить по 80 бит двоичных данных (и кстати, ReadBinaryStream, а не absolute)
А решается выбором "кошерного" десятичного разделителя, и использованием StrToFloatDef с параметром FormatSettings, где он установлен
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Aндрей (статус: 1-ый класс), 9 марта 2011, 09:27 [#3]:
min@y™: лучше научить
bugmenot: где почитать - я темный в этом вопроосе?
|
|
min@y™ (статус: Доктор наук), 9 марта 2011, 10:02 [#4]:
Цитата (Aндрей):
лучше научить
Может не надо?
Пиши в файл методом WriteFloat(), а читай методом ReadString() и приводи разделитель к нужному виду. Есть ещё процедура Val(), которой по барабану региональные настройки, она принимает только точку в качестве разделителя.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Aндрей (статус: 1-ый класс), 9 марта 2011, 10:42 [#5]:
min@y™: хотелось бы, или может можно красиво переопределить ReadFloat?
|
|
Вадим К (статус: Академик), 9 марта 2011, 10:51 [#6]:
Ну так кто мешает? пишем свой класс-наследник и всех делов то.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 9 марта 2011, 10:53 [#7]:
Цитата (Вадим К):
Ну так кто мешает? пишем свой класс-наследник и всех делов то.
Присоединяюсь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 9 марта 2011, 11:10 [#8]:
а если делфи с последних, то можно написать хелпер. То есть, такой небольшой класс, который расширит функциональность основного TIniFiles и добавит ему пару новых методов, типа
TrueReadFloat.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
bugmenot (статус: 3-ий класс), 12 марта 2011, 11:50 [#9]:
> bugmenot: где почитать - я темный в этом вопроосе?
F1? десятичный разделитель внезапно называется DecimalSeparator
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|