powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FloatToStr и знак разделителя десятичной дроби в разных системах
25 сообщений из 131, страница 2 из 6
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39697439
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

лапочка ты наш.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39697665
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для программ со скрипом еще допустимо юзать FormatSettings. Но только при условии, что все библиотеки ведут себя порядочно и сами FormatSettings не касаются. Да и то возможны накладки.
Однако за наводку на UpdateFormatSettings спасибо, не знал. Стало быть, предусмотрен подхват смены значений юзером.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39697791
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2возможны накладки.Расскажи мне для общего образования причины возможныхвлзможны накладок?

Но окромя явных ошибок програмстов в собственном коде.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39697810
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatВасилий 2возможны накладки.Расскажи мне для общего образования причины возможныхвлзможны накладок?

Но окромя явных ошибок програмстов в собственном коде.
Ну например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше. Т.е. порядок юзанья юнитов должен быть регламентирован, а это слабое звено, т.к. не контролируется компилятором. Или другой вариант - кто-то может забыться и временно поменять поле записи. В коллективной разработке с кучей прогеров, да еще и не одного "поколения" вполне вероятно упустить такие детали.
Так что "если б я была царица", и если уж никак не обойтись без глобальной переменной, я бы рекомендовал завести собственную константу и иниц-ть ее через хак по указателю. Таким образом точно будет страховка от влияния библиотек раз и защита от ненамеренной модификации два.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39698035
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,
авторНу например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше. Мы говорим не абстрактную глобальную переменную а про вполне конкретную из System.SysUtils, иннициализируемую в нем же в разделе initialization.

Как она может быть не иннициализированой при ее использовании? ;)

авторзабыться и временно поменять
Это просто ошибка програмиста, которая может быть где угодно.

авторВ коллективной разработке с кучей прогеров, да еще и не одного "поколения" вполне вероятно упуститьЗа такое надо бить, и можно даже ногами.
Менять глобальный FormatSettings в процессе работы ПО - это из разряда стрельбы себе (и соседям) в ногу.

авторрекомендовал завести собственную константу и иниц-ть ее через хак по указателю
Не-не-не, Девид Блейн, я лучше по старинке. ;)
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39698138
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

Не-не-не. Фигня эта всё про DecimalSeparator и остальное. Есть СТАНДАРТ, конвенции, от них и надо плясать.

https://ru.wikipedia.org/wiki/Открытый_формат
https://ru.wikipedia.org/wiki/Формат
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39698523
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatВасилий 2,
авторНу например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше. Мы говорим не абстрактную глобальную переменную а про вполне конкретную из System.SysUtils, иннициализируемую в нем же в разделе initialization.

Как она может быть не иннициализированой при ее использовании? ;)

Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39698730
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.
Я предлагал выставить её 1 раз при старте ПО и больше не трогать.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39698920
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatВасилий 2Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.
Я предлагал выставить её 1 раз при старте ПО и больше не трогать.
Ну. А старт ПО - понятие растяжимое.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846502
В продолжении темы, часто рисуются графики для иностранных заказчиков, где в требованиях четко прописано "разделитель на рисунках - точка". В то время как у нас наоборот - "запятая".
Вопрос, рисую посредством стандартного Chart (функционала вполне хватает). Как "потокобезопасно" поменять разделитель, что бы он выводился строго в графиках Chart-a, параметра такого не нашел (хотя может плохо искал), да и видно что подхватывают глобальный DecimalSeparator.

Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем опасно, так как отрисовка графика и подгрузка данных вполне могут идти одновременно в разных потоках.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846503
Андрей ИгоревичВ продолжении темы, часто рисуются графики для иностранных заказчиков, где в требованиях четко прописано "разделитель на рисунках - точка". В то время как у нас наоборот - "запятая".
Вопрос, рисую посредством стандартного Chart (функционала вполне хватает). Как "потокобезопасно" поменять разделитель, что бы он выводился строго в графиках Chart-a, параметра такого не нашел (хотя может плохо искал), да и видно что подхватывают глобальный DecimalSeparator.

Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем опасно, так как отрисовка графика и подгрузка данных вполне могут идти одновременно в разных потоках.
Блин, думал маленькая картинка вставится, а вставилась здоровая, редактировать не могу, ну и фиг с ним.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846506
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 16:47, Андрей Игоревич пишет:
> Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем ОПАСНО

ах, как интересно!
я уже таки внемлю.
вещай.
про опасность.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846517
Мимопроходящий07.08.2019 16:47, Андрей Игоревич пишет:
> Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем ОПАСНО

ах, как интересно!
я уже таки внемлю.
вещай.
про опасность.



??? Если я для отрисовки графиков меняю данную переменную на '.' и в этот же момент другим потоком у меня считываются данные с файла где разделитель ',' - произойдет что...?

Тут и не только тут писали про "локальную переменную", но как создать её только для отрисовки Чарта - не знаю и поиском в лоб не нашел (хотя уверен, что это вопрос уже 1000 раз поднимался, как и любой другой, просто надо грамотно составить запрос в поисковике или прочитать какую-нибудь умную книгу, но вот я пока не смог).
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846522
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 17:03, Андрей Игоревич пишет:
> произойдет что...?

да!
что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846525
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя что, нити одновременно с разными форматами работают? :)

Задай DecimalSeparator при старте приложения, а после создавай нити.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846526
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно пойти по другому пути:
- допустим текущий локальный разделитель в системе - запятая
- в текстовой строке, перед конвертацией в число, ищем символ "точка" - если нашли, заменяем на символ "запятая"
- конвертируем откорректированную строку в число. изменение глобальной переменной не потребовалось, профит
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846529
Мимопроходящий07.08.2019 17:03, Андрей Игоревич пишет:
> произойдет что...?

да!
что?

Зуб даешь, что ничего? Быстрый тест сразу привел к ошибке формата числа.
ёёёёёУ тебя что, нити одновременно с разными форматами работают? :)
Задай DecimalSeparator при старте приложения, а после создавай нити.
Я то работаю с одним форматом, но на картинках в документах формат может быть разный, так как требования к разделителю в каждом государстве свои, а работаем мы с разными заказчиками.
asutp2можно пойти по другому пути:
- допустим текущий локальный разделитель в системе - запятая
- в текстовой строке, перед конвертацией в число, ищем символ "точка" - если нашли, заменяем на символ "запятая"
- конвертируем откорректированную строку в число. изменение глобальной переменной не потребовалось, профит
Оно конечно можно, но на данный момент я открываю и сохраняю 30+ видов файлов в разного формата размещения текста (всякие разные массивы, данные, массивы строк и прочее), я несколько недель писал код чтоб всё это аккуратно и надежно открывать в потоке, впихивать во всё это замену точки на запятую нетривиальная задача для меня, мне проще уж на момент отрисовки графиков остановить все потоки :), отрисовать и возобновить. Но что одно, что другое не просто костыли, целая инвалидная коляска.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846532
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 17:24, Андрей Игоревич пишет:
> Быстрый тест сразу привел к ошибке формата числа.

ах, как интересно!
ну-ка, ну-ка, опубликуй.

> Я то работаю с одним форматом, но на картинках в документах формат может быть разный

то что ты выставляешь в DecimalSeparator ну никак не влияет на настройки ОС.
ваще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846535
Мимопроходящий07.08.2019 17:24, Андрей Игоревич пишет:
> Быстрый тест сразу привел к ошибке формата числа.

ах, как интересно!
ну-ка, ну-ка, опубликуй.

> Я то работаю с одним форматом, но на картинках в документах формат может быть разный

то что ты выставляешь в DecimalSeparator ну никак не влияет на настройки ОС.
ваще.

А при чем тут настройки ОС? И считываю и рисую я в одной программе...
Выглядит это так:
1. Этап расчет во внешней программе
2. Подгрузка в мою программу
3. отрисовка подгруженного (что пользователю желаемо наблюдать в данный момент)
4. GoTo1

Расчет идет весьма долго и возможность в любой момент оценить результаты весьма важна.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846537
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 17:34, Андрей Игоревич пишет:
> А при чем тут настройки ОС? И считываю и рисую я в одной программе...
> Выглядит это так:
> 1. Этап расчет во внешней программе
> 2. Подгрузка в мою программу
> 3. отрисовка подгруженного (что пользователю желаемо наблюдать в данный момент)
> 4. GoTo1
>
> Расчет идет весьма долго и возможность в любой момент оценить результаты весьма важна.

и шо?
в чем твои проблемы?
как делал?
что не получилось?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846556
Мимопроходящий07.08.2019 17:34, Андрей Игоревич пишет:
> А при чем тут настройки ОС? И считываю и рисую я в одной программе...
> Выглядит это так:
> 1. Этап расчет во внешней программе
> 2. Подгрузка в мою программу
> 3. отрисовка подгруженного (что пользователю желаемо наблюдать в данный момент)
> 4. GoTo1
>
> Расчет идет весьма долго и возможность в любой момент оценить результаты весьма важна.

и шо?
в чем твои проблемы?
как делал?
что не получилось?

Шо-шо, сменил значение глобальной переменной - отрисовал - поменял назад, в это же время в другом потоке идет подгрузка с файлов (файлы огромные, открывает долго), при ручном запуске потоков для теста - сразу вылетела ошибка формата.

Если глобальная переменная DecimalSeparator будет изменена после запуска потока - гарантируется ли это, что в потоке проблем не будет? Поток как-то её фиксирует на момент запуска?
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846558
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 18:06, Андрей Игоревич пишет:
> сменил значение глобальной переменной - отрисовал - ПОМЕНЯЛ НАЗАД...

нахрена?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846559
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревичсменил значение глобальной переменной

Никогда, ни при каких обстоятельствах, так делать не надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846560
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.08.2019 18:13, Dimitry Sibiryakov пишет:
> Никогда, ни при каких обстоятельствах, так делать не надо.

ой, я вас умоляю!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846562
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

если сам занимаешься конвертированием значений в потоках, то можно использовать функции с локальным FormatSettings, см хелп по
Код: pascal
1.
function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; overload;
...
Рейтинг: 0 / 0
25 сообщений из 131, страница 2 из 6
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FloatToStr и знак разделителя десятичной дроби в разных системах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]