Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 074

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Для хранения данных использую ini-файлы (класс TMemIniFile)
в основном использую методы для записи/загрузки чисел (ReadFloat)
в основном все дробные данные записывались в файл через запятую (Value= 0,0105)
Возникла такая проблема:
На некоторых ПК стоит аглийкий вариант ввода, и все данные записываются через точку(Value= 0.0105)
Соответственно, возникает проблема переносимости данных.

Что можно сделать, если нельзя изменить настройки ОС Windows (пользователь использует так настроеную систему для других программ)??

Очень нужен ваш совет. Спасибо

Aндрей Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 8 марта 2011, 16:38
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 12 марта 2011, 11:50; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 8 марта 2011, 18:34 [#1]:

В любом случае числа - это набор байтов. Вот так его и храни. Для extended будет 10 байт. Очень поможет директива absolute. Научить или сам справишься?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 8 марта 2011, 20:34 [#2]:

Вздор, INI придумали для того, чтобы не хранить по 80 бит двоичных данных (и кстати, ReadBinaryStream, а не absolute)

А решается выбором "кошерного" десятичного разделителя, и использованием StrToFloatDef с параметром FormatSettings, где он установлен
виконання програми розпочинається з того самого мiсця, де призупинилося.

Aндрей

Aндрей (статус: 1-ый класс), 9 марта 2011, 09:27 [#3]:

min@y™: лучше научить
bugmenot: где почитать - я темный в этом вопроосе?
min@y™

min@y™ (статус: Доктор наук), 9 марта 2011, 10:02 [#4]:

Цитата (Aндрей):

лучше научить

Может не надо?
Пиши в файл методом WriteFloat(), а читай методом ReadString() и приводи разделитель к нужному виду. Есть ещё процедура Val(), которой по барабану региональные настройки, она принимает только точку в качестве разделителя.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Aндрей

Aндрей (статус: 1-ый класс), 9 марта 2011, 10:42 [#5]:

min@y™: хотелось бы, или может можно красиво переопределить ReadFloat?
Вадим К

Вадим К (статус: Академик), 9 марта 2011, 10:51 [#6]:

Ну так кто мешает? пишем свой класс-наследник и всех делов то.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 9 марта 2011, 10:53 [#7]:

Цитата (Вадим К):

Ну так кто мешает? пишем свой класс-наследник и всех делов то.

Присоединяюсь.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 9 марта 2011, 11:10 [#8]:

а если делфи с последних, то можно написать хелпер. То есть, такой небольшой класс, который расширит функциональность основного TIniFiles и добавит ему пару новых методов, типа
TrueReadFloat.
Галочка "подтверждения прочтения" - вселенское зло.
bugmenot

bugmenot (статус: 3-ий класс), 12 марта 2011, 11:50 [#9]:

> bugmenot: где почитать - я темный в этом вопроосе?
F1? десятичный разделитель внезапно называется DecimalSeparator
виконання програми розпочинається з того самого мiсця, де призупинилося.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.03 сек.