Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5 6      [все]
 FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Есть программа, хорошо работает. Переношу экзешник на другую систему - не работает. Долго и занудно искал ошибку, нашел:
В одной системе FloatToStr преобразует текст с запятой в число без проблем, а в другой выдаёт ошибку
автор
'-0,59' is not a valid floating point value

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

А вообще, что удивительно, до определённого момента всё работало на обеих системах, а потом хоп и перестало (знак разделителя в системе сам не менял, но комп рабочий, может админы чего намудрили).
3 сен 18, 10:11    [21662333]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6241
Андрей Игоревич,

FormatSettings
3 сен 18, 10:14    [21662335]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48611

Андрей Игоревич
В одной системе FloatToStr преобразует текст с запятой в число без проблем

FloatToStr годится только для строк, которые вводит пользователь в соответствии с его
пользовательскими настройками. Если ты откуда-то берёшь строку фиксированного формата, то
к ней надо применять функции преобразования с фиксированным форматом. Например, Val().

Posted via ActualForum NNTP Server 1.5

3 сен 18, 12:45    [21662526]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
DarkMaster,

Спасибо:
FormatSettings.DecimalSeparator:='.';
3 сен 18, 13:18    [21662570]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Андрей Игоревич,

Точнее наоборот
FormatSettings.DecimalSeparator:=',';
3 сен 18, 13:19    [21662571]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13352
Андрей Игоревич
Точнее наоборот


нужно сделать 2 варианта замены
Андрей Игоревич
FloatToStr преобразует текст с запятой в число без проблем, а в другой выдаёт ошибку


  val := StringReplace(val, ',', FormatSettings.DecimalSeparator, []);
  val := StringReplace(val, '.', FormatSettings.DecimalSeparator, []);


т.е. чтобы не гадать, что там у пользователя, можно и точку, и запятую заменить на "FormatSettings.DecimalSeparator"
3 сен 18, 13:27    [21662585]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
X11,

Спасибо, так и сделаю.
3 сен 18, 13:29    [21662590]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11257
X11
нужно сделать 2 варианта замены
Не нужно. Если данные формируются в этой системе, то используем дефолтный разделитель. Если приходят снаружи, то используем разделитель согласно протокола
3 сен 18, 13:34    [21662601]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
X11
нужно сделать 2 варианта замены
  val := StringReplace(val, ',', FormatSettings.DecimalSeparator, []);
  val := StringReplace(val, '.', FormatSettings.DecimalSeparator, []);


т.е. чтобы не гадать, что там у пользователя, можно и точку, и запятую заменить на "FormatSettings.DecimalSeparator"

Борланд научил плохому, а все и рады потакать дурным привычкам. FormatSettings как глобальную переменную надо избегать всеми силами кроме тех случаев, когда она используется по назначению - как текущие региональные настройки. Да и то, глобальная переменная - зло, и более правильно TFormatSettings.Create('') непосредственно перед применением.
Потому как:
1) Некая библиотека глубоко внутри себя сменила DecimalSeparator на что-то свое, и не вернула прежнее значение.
1.1) Некая библиотека глубоко внутри себя сменила DecimalSeparator на что-то свое, и не успела вернуть прежнее значение, как из другого потока выполняется обращение к этому полю
2) Программа запущена, юзер сменил региональные настройки. FormatSettings содержит старые значения.
и т.д.

В общем, я советую так (к чему пришел на своем опыте):
1) Float/DateToStr, Format без параметра типа TFormatSettings - только для отображения, да и то осмысленно
2) Во всех остальных случаях - фиксированный экземпляр TFormatSettings, с жестко прописанными полями. В качестве основы можно взять, например, LOCALE_INVARIANT.
3 сен 18, 15:14    [21662794]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Андрей Игоревич
Андрей Игоревич,

Точнее наоборот
FormatSettings.DecimalSeparator:=',';


Когда пользуетесь настройкой глобального FormatSettings не забывайте о:

Application.UpdateFormatSettings:=False;


А то вы рискуете огрести проблем.
3 сен 18, 15:31    [21662814]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10980
_Vasilisk_
X11
нужно сделать 2 варианта замены
Не нужно. Если данные формируются в этой системе, то используем дефолтный разделитель. Если приходят снаружи, то используем разделитель согласно протокола

У меня другие рекомендации
1. системные настройки формата использовать только для вывода на экран/конвертации пользовательского ввода
2. для файловых операций использовать стандартизованные (протокольные)
3. чтобы не было коллизий вспомнить про третий параметр функций.
3 сен 18, 16:26    [21662877]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4096
rgreat
Андрей Игоревич
Андрей Игоревич,

Точнее наоборот
FormatSettings.DecimalSeparator:=',';


Когда пользуетесь настройкой глобального FormatSettings не забывайте о:

Application.UpdateFormatSettings:=False;


А то вы рискуете огрести проблем.

Она локальная, и стртуфлоат принимает вторым параметром.
3 сен 18, 16:52    [21662908]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4096
JaDi,

в нормальных делфях, естественно.
3 сен 18, 16:52    [21662910]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
JaDi
Она локальная

Да ну?

unit System.SysUtils;

<..>

var
  // Note: Using the global FormatSettings formatting variables is not thread-safe.
  FormatSettings: TFormatSettings;


JaDi
и стртуфлоат принимает вторым параметром.
FloatToStr и без 2-го параметра бывает.
Причем если проект разрабатывается нормально (без бардака), то проще использовать именно такой.
3 сен 18, 17:53    [21662988]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4096
rgreat
JaDi
и стртуфлоат принимает вторым параметром.
FloatToStr и без 2-го параметра бывает.
Причем если проект разрабатывается нормально (без бардака), то проще использовать именно такой.

О да, результат использования без форматсеттинга прекрасно виден в этом самом топике.
3 сен 18, 18:25    [21663020]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
JaDi
О да, результат использования без форматсеттинга прекрасно виден в этом самом топике.
Трудно-ли умеючи? (с)
3 сен 18, 18:45    [21663040]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4096
rgreat,

так-так, чуствую, далее пойдет предложение следить за компами пользователей и их настройками :D
3 сен 18, 18:58    [21663044]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Делай так.

Application.UpdateFormatSettings:=False;
FormatSettings.DecimalSeparator:='.';


И можешь не следить.
3 сен 18, 19:01    [21663049]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Но особо огороженные граждане могут каждый раз генерить свою копию FormatSettings.

Разрешаю.
3 сен 18, 19:02    [21663052]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10980
rgreat
Но особо огороженные граждане могут каждый раз генерить свою копию FormatSettings.
Зачем каждый раз?
Одного экземпляра для всех файловых операций вполне достаточно. А переключение дефолтного рано или поздно непременно приведет к косякам. Например в многопоточном приложении.
3 сен 18, 20:57    [21663128]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Соколинский Борис
А переключение дефолтного рано или поздно непременно приведет к косякам. Например в многопоточном приложении.
Зачем его вообще переключать?
Один раз выставил как надо при старте и радуйся.

Делать разные разделители в разных местах приложения - это либо явный bad design, либо исключение без которого никак не обойтись, но тут уже не зазорно и локальный TFormatSetting поюзать.
3 сен 18, 21:18    [21663145]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10980
rgreat
Зачем его вообще переключать?
Затем, что в UI должны быть системные настройки, а в файле стандартизованные.
3 сен 18, 22:34    [21663206]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Котовасия
Member

Откуда:
Сообщений: 1185
Соколинский Борис
rgreat
Зачем его вообще переключать?
Затем, что в UI должны быть системные настройки, а в файле стандартизованные.

Ой да ладно, "должны".
Мы во всех приложениях при старте выставляем единые настройки формата, а дальше пользуйся чем бог на душу положит, все равно десятичный разделитель - всегда точка, а дата - всегда только вот в таких форматах, невзирая на системные настройки, и никто никогда ни разу не жаловался, а наоборот. Может быть, когда начнем англичанам софт продавать, формат даты будем системный использовать, а в России и так сойдет.
3 сен 18, 22:51    [21663227]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Соколинский Борис
Затем, что в UI должны быть системные настройки
Нефиг.
Как минимум не в корпоративном ПО.
3 сен 18, 22:53    [21663232]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Разделитель целого и дробного - "точка" и баста!
3 сен 18, 22:53    [21663233]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Котовасия
Member

Откуда:
Сообщений: 1185
rgreat,

лапочка ты наш.
3 сен 18, 22:57    [21663236]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
Для программ со скрипом еще допустимо юзать FormatSettings. Но только при условии, что все библиотеки ведут себя порядочно и сами FormatSettings не касаются. Да и то возможны накладки.
Однако за наводку на UpdateFormatSettings спасибо, не знал. Стало быть, предусмотрен подхват смены значений юзером.
4 сен 18, 11:43    [21663699]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Василий 2
возможны накладки.
Расскажи мне для общего образования причины возможныхвлзможны накладок?

Но окромя явных ошибок програмстов в собственном коде.
4 сен 18, 14:31    [21664069]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
rgreat
Василий 2
возможны накладки.
Расскажи мне для общего образования причины возможныхвлзможны накладок?

Но окромя явных ошибок програмстов в собственном коде.

Ну например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше. Т.е. порядок юзанья юнитов должен быть регламентирован, а это слабое звено, т.к. не контролируется компилятором. Или другой вариант - кто-то может забыться и временно поменять поле записи. В коллективной разработке с кучей прогеров, да еще и не одного "поколения" вполне вероятно упустить такие детали.
Так что "если б я была царица", и если уж никак не обойтись без глобальной переменной, я бы рекомендовал завести собственную константу и иниц-ть ее через хак по указателю. Таким образом точно будет страховка от влияния библиотек раз и защита от ненамеренной модификации два.
4 сен 18, 14:56    [21664114]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Василий 2,
автор
Ну например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше.
Мы говорим не абстрактную глобальную переменную а про вполне конкретную из System.SysUtils, иннициализируемую в нем же в разделе initialization.

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

автор
забыться и временно поменять

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

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

автор
рекомендовал завести собственную константу и иниц-ть ее через хак по указателю

Не-не-не, Девид Блейн, я лучше по старинке. ;)
4 сен 18, 18:40    [21664555]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
rgreat,

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

https://ru.wikipedia.org/wiki/Открытый_формат
https://ru.wikipedia.org/wiki/Формат
5 сен 18, 01:35    [21664922]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
rgreat
Василий 2,
автор
Ну например, использование переменной может произойти до ее высечения в мраморе. Некий модуль может быть иниц-н раньше.
Мы говорим не абстрактную глобальную переменную а про вполне конкретную из System.SysUtils, иннициализируемую в нем же в разделе initialization.

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

Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.
5 сен 18, 14:39    [21665752]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Василий 2
Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.

Я предлагал выставить её 1 раз при старте ПО и больше не трогать.
5 сен 18, 20:00    [21666222]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
rgreat
Василий 2
Ты же её предлагал заполнять фиксированными значениями. Это я и имел в виду.

Я предлагал выставить её 1 раз при старте ПО и больше не трогать.

Ну. А старт ПО - понятие растяжимое.
6 сен 18, 11:57    [21666730]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
В продолжении темы, часто рисуются графики для иностранных заказчиков, где в требованиях четко прописано "разделитель на рисунках - точка". В то время как у нас наоборот - "запятая".
Вопрос, рисую посредством стандартного Chart (функционала вполне хватает). Как "потокобезопасно" поменять разделитель, что бы он выводился строго в графиках Chart-a, параметра такого не нашел (хотя может плохо искал), да и видно что подхватывают глобальный DecimalSeparator.

Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем опасно, так как отрисовка графика и подгрузка данных вполне могут идти одновременно в разных потоках.

К сообщению приложен файл. Размер - 146Kb
7 авг 19, 16:46    [21943987]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Андрей Игоревич
В продолжении темы, часто рисуются графики для иностранных заказчиков, где в требованиях четко прописано "разделитель на рисунках - точка". В то время как у нас наоборот - "запятая".
Вопрос, рисую посредством стандартного Chart (функционала вполне хватает). Как "потокобезопасно" поменять разделитель, что бы он выводился строго в графиках Chart-a, параметра такого не нашел (хотя может плохо искал), да и видно что подхватывают глобальный DecimalSeparator.

Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем опасно, так как отрисовка графика и подгрузка данных вполне могут идти одновременно в разных потоках.

Блин, думал маленькая картинка вставится, а вставилась здоровая, редактировать не могу, ну и фиг с ним.
7 авг 19, 16:47    [21943989]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

07.08.2019 16:47, Андрей Игоревич пишет:
> Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем ОПАСНО

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


Posted via ActualForum NNTP Server 1.5

7 авг 19, 16:50    [21943992]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
07.08.2019 16:47, Андрей Игоревич пишет:
> Менять глобальный DecimalSeparator не просто "потоконебезопасно", а в моём случае более чем ОПАСНО

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



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

Тут и не только тут писали про "локальную переменную", но как создать её только для отрисовки Чарта - не знаю и поиском в лоб не нашел (хотя уверен, что это вопрос уже 1000 раз поднимался, как и любой другой, просто надо грамотно составить запрос в поисковике или прочитать какую-нибудь умную книгу, но вот я пока не смог).
7 авг 19, 17:03    [21944007]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

07.08.2019 17:03, Андрей Игоревич пишет:
> произойдет что...?

да!
что?

Posted via ActualForum NNTP Server 1.5

7 авг 19, 17:08    [21944012]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
ёёёёё
Member

Откуда:
Сообщений: 1295
У тебя что, нити одновременно с разными форматами работают? :)

Задай DecimalSeparator при старте приложения, а после создавай нити.
7 авг 19, 17:12    [21944015]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 549
можно пойти по другому пути:
- допустим текущий локальный разделитель в системе - запятая
- в текстовой строке, перед конвертацией в число, ищем символ "точка" - если нашли, заменяем на символ "запятая"
- конвертируем откорректированную строку в число. изменение глобальной переменной не потребовалось, профит
7 авг 19, 17:12    [21944016]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
07.08.2019 17:03, Андрей Игоревич пишет:
> произойдет что...?

да!
что?

Зуб даешь, что ничего? Быстрый тест сразу привел к ошибке формата числа.
ёёёёё
У тебя что, нити одновременно с разными форматами работают? :)
Задай DecimalSeparator при старте приложения, а после создавай нити.

Я то работаю с одним форматом, но на картинках в документах формат может быть разный, так как требования к разделителю в каждом государстве свои, а работаем мы с разными заказчиками.
asutp2
можно пойти по другому пути:
- допустим текущий локальный разделитель в системе - запятая
- в текстовой строке, перед конвертацией в число, ищем символ "точка" - если нашли, заменяем на символ "запятая"
- конвертируем откорректированную строку в число. изменение глобальной переменной не потребовалось, профит

Оно конечно можно, но на данный момент я открываю и сохраняю 30+ видов файлов в разного формата размещения текста (всякие разные массивы, данные, массивы строк и прочее), я несколько недель писал код чтоб всё это аккуратно и надежно открывать в потоке, впихивать во всё это замену точки на запятую нетривиальная задача для меня, мне проще уж на момент отрисовки графиков остановить все потоки :), отрисовать и возобновить. Но что одно, что другое не просто костыли, целая инвалидная коляска.
7 авг 19, 17:24    [21944021]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

07.08.2019 17:24, Андрей Игоревич пишет:
> Быстрый тест сразу привел к ошибке формата числа.

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

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

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

Posted via ActualForum NNTP Server 1.5

7 авг 19, 17:28    [21944027]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
07.08.2019 17:24, Андрей Игоревич пишет:
> Быстрый тест сразу привел к ошибке формата числа.

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

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

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

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

Расчет идет весьма долго и возможность в любой момент оценить результаты весьма важна.
7 авг 19, 17:34    [21944030]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

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

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

Posted via ActualForum NNTP Server 1.5

7 авг 19, 17:39    [21944032]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

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

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

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

Если глобальная переменная DecimalSeparator будет изменена после запуска потока - гарантируется ли это, что в потоке проблем не будет? Поток как-то её фиксирует на момент запуска?
7 авг 19, 18:06    [21944052]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

07.08.2019 18:06, Андрей Игоревич пишет:
> сменил значение глобальной переменной - отрисовал - ПОМЕНЯЛ НАЗАД...

нахрена?

Posted via ActualForum NNTP Server 1.5

7 авг 19, 18:11    [21944054]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48611

Андрей Игоревич
сменил значение глобальной переменной

Никогда, ни при каких обстоятельствах, так делать не надо.

Posted via ActualForum NNTP Server 1.5

7 авг 19, 18:13    [21944056]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

07.08.2019 18:13, Dimitry Sibiryakov пишет:
> Никогда, ни при каких обстоятельствах, так делать не надо.

ой, я вас умоляю!

Posted via ActualForum NNTP Server 1.5

7 авг 19, 18:16    [21944060]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1375
Андрей Игоревич,

если сам занимаешься конвертированием значений в потоках, то можно использовать функции с локальным FormatSettings, см хелп по
function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; overload;
7 авг 19, 18:19    [21944063]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
07.08.2019 18:06, Андрей Игоревич пишет:
> сменил значение глобальной переменной - отрисовал - ПОМЕНЯЛ НАЗАД...

нахрена?

как бы точка мне нужна только на графиках во всех остальных данных (открываемых, сохраняемых) мне нужна запятая, чего бардак разводить.
Dimitry Sibiryakov
Андрей Игоревич
сменил значение глобальной переменной

Никогда, ни при каких обстоятельствах, так делать не надо.

Ну дак я с чаго и написал, что ищу другой путь, сам понимаю что так делать не надо, но как надо, не знаю...
7 авг 19, 18:29    [21944076]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Zelius
Андрей Игоревич,

если сам занимаешься конвертированием значений в потоках, то можно использовать функции с локальным FormatSettings, см хелп по
function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; overload;

В принципе вариант, хотя очень трудоёмко будет весь код править, его много, (зато плюсик к стабильности :) ), но выглядит получше чем СтрингРеплейс...
7 авг 19, 18:30    [21944078]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Андрей Игоревич
как бы точка мне нужна только на графиках во всех остальных данных (открываемых, сохраняемых) мне нужна запятая, чего бардак разводить.
Блокировать ПО при отрисовке графика не предлогать?
7 авг 19, 18:32    [21944079]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48611

Андрей Игоревич
как надо, не знаю...

Сначала читай справку о функциях Val() и Str(). Они - дл всех случаях где разделитель -
точка. Если таки приспичило использовать именно FloatToStr, то выше уже ткнули пальцем.

Posted via ActualForum NNTP Server 1.5

7 авг 19, 18:32    [21944082]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Еще можно графики в отдельный процесс вынести.
7 авг 19, 18:33    [21944084]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
ziv-2014
Member

Откуда:
Сообщений: 468
А в axis нельзя задать формат?
7 авг 19, 18:36    [21944091]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

вообще-то, у Chart'a всё НАСТРАИВАЕТСЯ!

F1: TChartSeries.ValueFormat

Posted via ActualForum NNTP Server 1.5

7 авг 19, 18:38    [21944092]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
rgreat
Андрей Игоревич
как бы точка мне нужна только на графиках во всех остальных данных (открываемых, сохраняемых) мне нужна запятая, чего бардак разводить.
Блокировать ПО при отрисовке графика не предлогать?

Я это сам уже предлагал :)
Dimitry Sibiryakov
Андрей Игоревич
как надо, не знаю...

Сначала читай справку о функциях Val() и Str(). Они - дл всех случаях где разделитель -
точка. Если таки приспичило использовать именно FloatToStr, то выше уже ткнули пальцем.

Про FloatToStr, про Val() и Str() применительно к моему вопросу - не очень, у меня везде запятая, точка нужна только на графиках и то не всегда.
Мимопроходящий
вообще-то, у Chart'a всё НАСТРАИВАЕТСЯ!

F1: TChartSeries.ValueFormat


Пока что-то не получилось и не поменялось ничего, да и странно такую настройку выносить в настойки серии завтра поковыряюсь почитаю поподробнее.
По мне это в настройках оси должно быть, но пока не нашел, слишком уж там много всего.
7 авг 19, 18:52    [21944100]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1375
Андрей Игоревич,

не оно?
7 авг 19, 18:58    [21944106]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
При чтении из файлов надо всегда жестко задавать formatsettings, иначе граблей соберешь немеряно. соответственно глобальное значение только на чарт будет действовать
7 авг 19, 19:00    [21944107]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48611

Андрей Игоревич
у меня везде запятая, точка нужна только на графиках и то не всегда.

Неправильно ты бутерброд ешь. В любом гуе должен использоваться именно системный
разделитель дробной части (и вообще системный формат вывода) ибо была на то воля
пользователя. Это для внутренней кухни, которую снаружи не видать, можно точку прибить
гвоздиком.

Posted via ActualForum NNTP Server 1.5

7 авг 19, 19:00    [21944108]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Zelius
Андрей Игоревич,

не оно?

Это вроде teechart, он бесплатный?
Dimitry Sibiryakov
Андрей Игоревич
у меня везде запятая, точка нужна только на графиках и то не всегда.

Неправильно ты бутерброд ешь. В любом гуе должен использоваться именно системный
разделитель дробной части (и вообще системный формат вывода) ибо была на то воля
пользователя. Это для внутренней кухни, которую снаружи не видать, можно точку прибить
гвоздиком.

На будущее буду стараться продумывать. Но в данном случае это не очень важно, исходные данные тут не то, что разные люди, разные организации делают и там в ТЗ, насколько я помню, разделитель дробной части прописан.
Василий 2
При чтении из файлов надо всегда жестко задавать formatsettings, иначе граблей соберешь немеряно. соответственно глобальное значение только на чарт будет действовать

Это через?
function StrToFloat(const S: string; const FormatSettings: TFormatSettings): Extended; overload;

Ну теперь на будущее так буду делать, если не так, то как можно локально менять FormatSettings не меняя его глобально?
7 авг 19, 19:13    [21944114]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1375
Андрей Игоревич
Это вроде teechart, он бесплатный?

Так вроде в дельфях стандартный и есть TeeChart порезанный
7 авг 19, 19:18    [21944119]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
Андрей Игоревич
Ну теперь на будущее так буду делать, если не так, то как можно локально менять FormatSettings не меняя его глобально?

можно сделать, как в доке к Лазарю предлагается
+ правда, здесь обратное преобразование, но идея та же
var
  FPointSeparator, FCommaSeparator: TFormatSettings;
begin
  // Format settings to convert a string to a float
  FPointSeparator := DefaultFormatSettings;
  FPointSeparator.DecimalSeparator := '.';
  FPointSeparator.ThousandSeparator := '#';// disable the thousand separator
  FCommaSeparator := DefaultFormatSettings;
  FCommaSeparator.DecimalSeparator := ',';
  FCommaSeparator.ThousandSeparator := '#';// disable the thousand separator

// This function works like StrToFloat, but simply tries two possible decimal separator
// This will avoid an exception when the string format doesn't match the locale
function AnSemantico.StringToFloat(AStr: string): Double;
begin
  if Pos('.', AStr) > 0 then Result := StrToFloat(AStr, FPointSeparator)
  else Result := StrToFloat(AStr, FCommaSeparator);
end;
7 авг 19, 20:16    [21944146]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 549
Нда, создается впечатление, что ТС всех тупо тролит. Эта "проблема" решается одной(!) строчкой кода
7 авг 19, 20:28    [21944151]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
В целом это какой-то цирк с конями. Дилетанты наконец-то вышли на международный рынок, но так и не сподобилась принять в команду профессионального разработчика. Становится боязно за реакторы иностранных заказчиков, - но, может быть, так им и надо?
7 авг 19, 20:32    [21944155]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Zelius
Андрей Игоревич
Это вроде teechart, он бесплатный?

Так вроде в дельфях стандартный и есть TeeChart порезанный
Нашел, тут он задается по другому - Chart1.LeftAxis.AxisValuesFormat, и он не работает, даже если задать "#.##E-#" - рисоваться будет запятая (точнее глобальный разделитель).
asutp2
Нда, создается впечатление, что ТС всех тупо тролит. Эта "проблема" решается одной(!) строчкой кода

Да, и какой же? Вон куча народу кучу всего напредлагали и всё это в моём случае ни разу не одна строчка кода, переделывать несколько тысяч готового и работающего кода - ни разу не "одна строчка".
Да и как бы большинство опять вдарились не в то, что я спрашивал. Меня полностью устраивает считывание файлов которое у меня реализовано, разделитель в них всегда, абсолютно всегда будет запятая, это прям гарантированный факт. Зачем мне впихивать сотни строчек по сути бесполезного ДЛЯ МЕНЯ кода? Мне график надо с точкой построить, всё, чтение\запись вообще из другой оперы.
Если более простого пути нет, то я воспользуюсь предложенным, но это ни разу не оптимальное решение.
Мне кажется это вы как раз троллите.
Vlad F
В целом это какой-то цирк с конями. Дилетанты наконец-то вышли на международный рынок, но так и не сподобилась принять в команду профессионального разработчика. Становится боязно за реакторы иностранных заказчиков, - но, может быть, так им и надо?

Я инженер-физик, я ни разу не программист, о чем пишу всегда и везде. Курс моего знакомства с программирование ограничивается одним курсом в университете. Я учил вообще другое.
Код который я пишу, по сути я его пишу исключительно по собственной мотивации, в свободное от основной работы время, никто его мне оплатит, даже премии(наверно) не даст, просто моя работа и работа моих коллег станет радикально проще.

Как показывает практика, что бы один человек был и хорошим физиком и профессиональным программистом - таких днем с огнем не сыщешь, а если и найдешь, то он заломит такие деньги за свою работу (супер примитивная программа с парой графиков и средненькой методикой,с верификацией без аттестации стоит 10кк рубелй, РАСЧЕТ (не программа, только РАСЧЕТ) на серьезной аттестованной программе (аналоге расчетных модулей с которыми я работаю) в Курчатнике стоит несколько десятков лямов, сколько стоит сама страшно представить, за рубежом цены ещё выше, если что.

Так что если считаете себя дофика хорошими программистами, прям реально хорошими, велком учить ядерную физику, теплогидравлику, сопромат, естественно на хорошем уровне, и будете плавать в шоколаде.
7 авг 19, 21:10    [21944165]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
Андрей Игоревич,

Это просто какой-то крик души! Гипотеза о пребывании в серьёзной опасности реакторов иностранных (к сожалению, возможно, что и не только) заказчиков получает свое подтверждение. Ваш покорный слуга тоже физик, физик-теоретик (астрофизика) с университетским образованием. Теоритически, могу подключиться к вашей команде (состоящей, как понимаю, из одного человека), если будет хоть какой-то бюджет
7 авг 19, 21:49    [21944174]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Vlad F,

Физик-теоретик теоретически готов. (с)

Не смог удержатся!
7 авг 19, 22:05    [21944179]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Vlad F
Андрей Игоревич,

Это просто какой-то крик души! Гипотеза о пребывании в серьёзной опасности реакторов иностранных (к сожалению, возможно, что и не только) заказчиков получает свое подтверждение. Ваш покорный слуга тоже физик, физик-теоретик (астрофизика) с университетским образованием. Теоритически, могу подключиться к вашей команде (состоящей, как понимаю, из одного человека), если будет хоть какой-то бюджет

Бюджета нет, всё исключительно на личной инициативе. Так же как в любой госконторе первые годы зарплата - копейки, но резюме можете слать - НИКИЭТ, Курятник, ГП, ОКБ (вам ничего не говорят эти слова - то как же так, вы же физик)
Правда астрофизики там нафиг не нужны (ну кроме Курятника), но вы же без проблем и ядерную физику освоите/теплогидравлику/сопромат/что-там у нас ещё нужно, так же неплохо знать конструкцию и обязательно мочь в конечноэлементные/конечнообъемные расчеты - судя по вашим комментариям вы на все руки мастер, для вас это легко.

Ну а если серьезно, коль вы грубы, то я отвечу, в интернетах вы все такие дофига программисты и мастера знаний во всех науках, только вот в жизни профессионалов в данных направлениях в стране и мире - единицы. Что бы хорошо понимать физику и конструкцию - надо потратить реально очень много времени, многие годы (без обид, но к астрофизикам я отношусь примерно как инженерам из ИБМ в Бауманке), что бы быть при этом быть профессиональным программистском нужно отдать этому всю жизнь, именно поэтому таких людей - единицы (и я не из их числа), но если вы действительно такой - полно контор куда вас примут с зп 5к$+ сразу, другой вопрос, что если вы такого уровня - то вы уже скорей всего работаете в подобном месте.
7 авг 19, 22:16    [21944183]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
Андрей Игоревич
Вон куча народу кучу всего напредлагали и всё это в моём случае ни разу не одна строчка кода... Да и как бы большинство опять вдарились не в то, что я спрашивал.

Парень, придержи коней. Народ на форуме не виноват в том, что из трех страниц обсуждения ты практически так и не удосужился хоть что-то попробовать или хотя бы почитать о предложенном. К чему претензии?

зы. а жалобы на "непрофильность" не прокатят. Я - тоже кодер-самоучка, даже не технарь. Как говорится, "взялся за гуж - не забудь сходить в душ..." © Картинка с другого сайта.
7 авг 19, 22:33    [21944190]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
Андрей Игоревич,

Идите, верно, дальше тем же лесом. Вам реальную техническую помощь (для постановочно-предметной, как понимаю, уже есть матёрый член команды)) предлагают, причем уже не в первый раз. С которой подобные сегодняшнему, да и многим предыдущим, проблемы в принципе бы в конференцию не выносились. А коллегиальность была упомянута в контексте лишь сближения мировозренческих позиций, и в том смысле, что учиться никогда не поздно даже физикам крутым, чего у вас почему-то не выходит на протяжении наблюдаемых лет.
Но вы же, так получается, в штыки? - так флаг вам руки, расширяйте дальше рынок, и, может быть, у заказчиков что-нибудь, наконец, взорвётся, и будут знать как с вами связываться впредь.
7 авг 19, 22:45    [21944196]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Док
Андрей Игоревич
Вон куча народу кучу всего напредлагали и всё это в моём случае ни разу не одна строчка кода... Да и как бы большинство опять вдарились не в то, что я спрашивал.

Парень, придержи коней. Народ на форуме не виноват в том, что из трех страниц обсуждения ты практически так и не удосужился хоть что-то попробовать или хотя бы почитать о предложенном. К чему претензии?

зы. а жалобы на "непрофильность" не прокатят. Я - тоже кодер-самоучка, даже не технарь. Как говорится, "взялся за гуж - не забудь сходить в душ..." © Картинка с другого сайта.

Я попробовал ВСЁ, что предложено, Зачем вы это пишите?
Первая страница вообще на другую тему и там я спросил и мне дали хороший ответ, и уже потом я спросил в продолжении прошлого вопроса, так как по сути тема заголовка та же, хоть вопрос и другой.
Обсуждение и тут шло вполне в конструктивном ключе и уверен, отличное решение мне бы подсказали, как подсказывали уже не один раз. Просто кто-то начал обвинять меня в троллинге, кто-то в непрофессионализме (при том зацепив не только программирование, но и в целом)- я ответил. Ничего более.

Я читаю и стараюсь понять/попробовать практически всё, что мне предлагают (нередко тратя на это кучу времени и не получая нужного результата) и очень благодарен людям за помощь.

Мне кажется, что для данной описанной проблемы явно есть более качественное решение, чем запихивать универсальность считывания и записи данных когда она(универсальность) не нужна. Возможно решение кроется в возможностях Charta, возможно иначе, потому и спросил на форуме, так как аккуратного решения сам придумать не смог.
7 авг 19, 22:50    [21944200]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Vlad F
Андрей Игоревич,

Идите, верно, дальше тем же лесом. Вам реальную техническую помощь (для постановочно-предметной, как понимаю, уже есть матёрый член команды)) предлагают, причем уже не в первый раз. С которой подобные сегодняшнему, да и многим предыдущим, проблемы в принципе бы в конференцию не выносились. А коллегиальность была упомянута в контексте лишь сближения мировозренческих позиций, и в том смысле, что учиться никогда не поздно даже физикам крутым, чего у вас почему-то не выходит на протяжении наблюдаемых лет.
Но вы же, так получается, в штыки? - так флаг вам руки, расширяйте дальше рынок, и, может быть, у заказчиков что-нибудь, наконец, взорвётся, и будут знать как с вами связываться впредь.

Про помощь не понял, вы про себя? Или про советы на форуме - за второе более чем благодарен, они реально очень помогают и я внимательно читаю каждое сообщение и пробую каждое предложение. Про вас - посылайте резюме в упомянутые организации, там реально хороших программистов не хватает, но как писал - первые годы зарплата копейки, но потом хороший рост, есть получастные конторы, там с ЗП сразу хорошо, но я о них не очень много знаю (не интересовался).
Про учиться - а я что делаю? Полтора года назад я стандартный калькулятор бы не написал на делфи, чуть лучше "хелоу ворда" умел программировать. Другой вопрос в том, что у меня реально очень много работы и далеко не всегда у меня есть возможность (да и банально сил и здоровья не хватает) программировать, программирую я в свободное время и вечерами/выходными дома, как уже писал, это не моя основная работа. Потому так медленно и учусь и так часто спрашиваю. И именно поэтому я написал - что быть специалистом в нескольких направлениях очень сложно (не выучить что-то новое, а учиться и развиваться сразу в разных, относительно не связанным направлениях параллельно работая), реально сложно.

Ну и отдельно. Все проблемы которые у меня возникали - все до единой, во многом благодаря форумчанам я решил и всегда за это благодарил. Если вы считаете мои вопросы слишком глупыми, недостойными конференции - это я принимаю (часто это действительно так), остальное - нет.
7 авг 19, 23:03    [21944206]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
rgreat
Физик-теоретик теоретически готов. (с)

Не смог удержатся!

Парни, я что-то устал. Давайте дальше с этим кадром сами, без меня.
7 авг 19, 23:26    [21944220]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
Андрей Игоревич
Я попробовал ВСЁ, что предложено, Зачем вы это пишите?

Вот честно пытался найти на всех трех страницах хоть строчку из твоего кода, воспроизводящего обсуждаемую проблему. Не нашел. Только плач Ярославны и капризы, что все время подсовывают не то. Так какую ты помощь ждешь от окружающих?
+
[youtube=]
8 авг 19, 00:57    [21944260]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Развели тут оффтопа, модератора на нас нет.
Возможно моя ошибка в том, что я продолжил старую тему с новым вопросом, вместо открытия новой, что вводит людей в заблуждение, почему опять обсуждают такой простой и решенный вопрос.
Распишу то, что я спрашивал ещё раз более подробно.
Мне нужно, что бы в программе менялся разделитель дробной части (запятая - точка) "на лету", то есть без смены его в системе, в графиках и выводе текста на канву. Зачем и почему - писал выше. Для примера пара картинок:
+ с запятыми

Картинка с другого сайта.
Картинка с другого сайта.
+ с точками

Картинка с другого сайта.
Картинка с другого сайта.]

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

Изменить вывод текста сразу везде можно использовав глобальную переменную DecimalSeparator, но это может крайне плохо сказаться на стабильности работы остальных потоков, да и вообще тут и на других форумах крайне негативно воспринимают изменение данной переменной, и я понимаю почему.
Далее перечислю что мне предложили:
1. Изменять глобальную переменную (насколько я понял), при этом гарантировать корректную работу потоков за счет:
а) использования SringReplase для приведения к единому формату
б) использование расширенной StrToFloat для универсального считывания данных при любом разделителе.
2. Предложили несколько вариантов форматирования вывода лейблов непосредственно на Чарте, увы, данные способы не сработали, так как разделитель там всё равно подхватывается из DecimalSeparator, даже если в упомянутых строках поставить точку/запятую. (хотя возможно там есть более хитрые возможности форматирования)
3. Предложили использовать Val() и Str(), конкретно это предложение я не очень понял применительно к Chart-у, так как он лейблы рисует в автоматическом режиме подобными процедурами изменить формат вывода не очень просто, у Чарта есть функционал вывода строк вместо числовых значений, но это сильно усложнит работу с ним.
4. Отдельно я сам предполагал вариант на момент отрисовки графиков тормозить все потоки, менять разделитель, рисовать, опять менять разделитель, возобновлять потоки.

Первый способ в обоих вариантах подразумевает во первых изменение в коде DecimalSeparator, что плохо, во вторых обширные изменения в достаточно большом объеме кода. Если ничего не придумаю лучше, воспользуюсь вариантом 1б, по крайней мере он полезен в качестве универсальности считывания/сохранения данных

Далее товарищ asutp2 написал
asutp2
Нда, создается впечатление, что ТС всех тупо тролит. Эта "проблема" решается одной(!) строчкой кода

но увы нигде не написал этой строчки. Возможно он прав и я что-то упустил, укажите.

Товарищ Vlad F ещё дальше написал серию достаточно оскорбительных сообщений, на которые я и ответил, вероятно - зря, к коду и программе они отношения не имеют.

Ещё дальше вы написали
Док
Парень, придержи коней. Народ на форуме не виноват в том, что из трех страниц обсуждения ты практически так и не удосужился хоть что-то попробовать или хотя бы почитать о предложенном
Как я уже писал выше, я внимательно прочитал всё предложенное и всё попробовал, за исключением Val() и Str(), так как не знаю как их применить к Лейблам чарта.
Теперь вы просите привести код,
Док
Вот честно пытался найти на всех трех страницах хоть строчку из твоего кода, воспроизводящего обсуждаемую проблему. Не нашел. Только плач Ярославны и капризы, что все время подсовывают не то. Так какую ты помощь ждешь от окружающих?

Я готов, какой код вам нужен и зачем? Что там должно быть?
8 авг 19, 02:03    [21944264]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Андрей Игоревич

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

Очень коряво написал, подразумевается - без смены в системе, без смены в остальных потоках, но со сменой вывода на графики Чарта и TextOut канвы.
8 авг 19, 02:05    [21944265]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
Андрей Игоревич
Я готов, какой код вам нужен и зачем? Что там должно быть?

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

Картинки же твои - ни о чем, такие же можно нарисовать и в Экселе. Вот если бы ты написал, в каком виде ты получаешь и хранишь данные, по какому условию определяшь вид десятичного разделителя, как из доп. потока отправляешь данные в TChart для отображения, тогда и дальнейший разговор пошел бы гораздо продуктивнее.
8 авг 19, 08:47    [21944319]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4529
Андрей Игоревич,

Здесь на 52-х страницах собраны наиболее популярные вопросы по teechart

http://qaru.site/questions/tagged/teechart?page=1

возможно найдете, что искали
8 авг 19, 09:46    [21944362]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
Собственно, задачу можно решить разными способами, но большая часть из них - костыли. Корректный способ - это в спеке формата файлов прибить гвоздями разделитель и при общении с файлами применять функции с параметром FormatSettings (к тому же, если вдруг понадобится обмениваться файлами с забугорьем - в программе будет достаточно поменять только один символ); графики же выводить с системным разделителем. Пока на поставленную задачу этого достаточно.

Имплантация FormatSettings может быть муторной и геморной, если до этого код писали абы как ("о, а что, в мире используется букв больше, чем 127???" (с) американцы после стандартизации таблицы ASCII), но это надо.
8 авг 19, 10:05    [21944380]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 10:05, Василий 2 пишет:
> Собственно, задачу можно решить разными способами

не взлетит.
тут программист нужен. (С)

Posted via ActualForum NNTP Server 1.5

8 авг 19, 11:20    [21944482]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
Мимопроходящий
08.08.2019 10:05, Василий 2 пишет:
> Собственно, задачу можно решить разными способами

не взлетит.
тут программист нужен. (С)

Do or die trying!
8 авг 19, 11:21    [21944484]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 11:21, Василий 2 пишет:
> Do or die trying!

don't try, die right away.

Posted via ActualForum NNTP Server 1.5

8 авг 19, 11:25    [21944490]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Док
Андрей Игоревич
Я готов, какой код вам нужен и зачем? Что там должно быть?

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

Зачем, ну зачееем??? Если вся проблема по сути описывается одной фразой:
"Как корректно менять дробный разделитель в коде программы для отдельных задач".
Всё остальное это частности, сейчас я фалы открыл одним способом, завтра научился делать это лучшим способом, переделал и всё сломалось, сейчас использую одно, потом - другое. Если я ищу корректный способ, он не должен от этого зависеть. Вот вам код описывающий всю суть проблемы:
if CheckBox1.Checked then DecimalSeparator:=',' else DecimalSeparator:='.';


Док
Картинки же твои - ни о чем, такие же можно нарисовать и в Экселе.
Можно, и рисуются, и там кстати есть пункт с такой настройкой. К чему вообще претензия, я просто показал что хочу получить. Мне даже код не нужен в ответ, саму идею, концепцию или хотя бы ссылку.

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

Абсолютно ненужная для данного обсуждения информация которая с высокой степенью вероятности приведет к обсуждению моего кода, а не изложенного вопроса. Но давайте, мне не сложно:
+ код
Кусочек кода отвечающий за считывание одного типа файлов:
procedure TOpenResultFiles.ReadingFileData (var ArrayData:TInclData;  FilePath:string; NMax:Integer;var StringFolder:string; var nData:integer);
var
 SorceFile,LineFile:TStringList;
 TempString:string;
 FA_Type:Byte;
 nFA:array [1..163] of Byte;
 i,j,k,n:integer;
 TempReal:Extended;
begin
   TempString:=ExtractFileDir(FilePath);
   if StringFolder<>TempString then      //каждый раз когда меняется каталог с результатами - значит новый расчет
       begin
           StringFolder:=TempString;
           Inc(nData);
           if nData>ArrayData.Size then
                begin
                 SetLength (ArrayData.Data,nData+1); //расширяем массив при наличии новых расчетов
                 ArrayData.Size:=nData;
                end;
            ArrayData.Data[nData].FilePath:=TempString;
       end;

   n:=NameToInt( ExtractFileName(FilePath) )+1;       //номер файла
   if n>ArrayData.Data[nData].NTime  then
        begin
          SetLength ( ArrayData.Data[nData].InTime,n+1);
          ArrayData.Data[nData].NTime:=n;
        end;

   for i:=1 to NTVS do SetLength ( ArrayData.Data[nData].InTime[n].TVS[i].DrVal, NMax+1);  //увеличиваю размер массива ДР

   ArrayData.Data[nData].InTime[n].FilePath:=FilePath;

   SorceFile:=TStringList.Create;
   SorceFile.LoadFromFile(FilePath);
   LineFile:=TStringList.Create;

   for i:=1 to SorceFile.Count-1 do  SorceFile[i]:=Trim(SorceFile[i]); //удаляем проблы до и после на всякий случай

   LineFile.Delimiter := ' ';
   LineFile.DelimitedText:=SorceFile[0];
   ArrayData.Data[nData].InTime[n].TimeSec:=StrToFloat(LineFile[1]);
   ArrayData.Data[nData].InTime[n].TimeDays:=StrToFloat(LineFile[4]);
   ArrayData.Data[nData].InTime[n].NTVS:=163;

   for i:=1 to SorceFile.Count-1 do
    begin
     LineFile.DelimitedText:=SorceFile[i];
     if LineFile[0]='FA' then FA_Type:=StrToInt(LineFile[2]);
     if LineFile[0]='FA/l(m)' then
        begin
          for j:=1 to LineFile.Count-1 do   nFA[j]:=StrToInt(LineFile[j]);
          if ArrayData.Data[nData].InTime[n].NTVS<LineFile.Count-1 then ArrayData.Data[nData].InTime[n].NTVS:=LineFile.Count-1;
          k:=0; //ДР
          ArrayData.Data[nData].InTime[n].NDR[FA_Type]:=0;
        end;
     if TryStrToFloat (LineFile[0], TempReal)   then
        begin
          Inc(k);
          ArrayData.Data[nData].InTime[n].DRHeight[FA_Type,k]:=TempReal;
          for j:=1 to LineFile.Count-1 do
            begin
               ArrayData.Data[nData].InTime[n].TVS[nFA[j]].DrVal[k].Value:=StrTofloat(LineFile[j]);
               ArrayData.Data[nData].InTime[n].TVS[nFA[j]].TSVType:=FA_Type;
            end;
          ArrayData.Data[nData].InTime[n].NDR[FA_Type]:=k;
        end;
    end;
   LineFile.Free;
   SorceFile.Free;
end;

Подобных кусков несколько десятков, так как формат хранения данных разный в разных файлах.

Вот так передаются в основной поток откуда уже рисуются чартом и другими рисвальщиками в главном потоке или других.
...
Synchronize(SendDataToGlobalThread);
...
procedure TOpenResultFiles.SendDataToGlobalThread;
var
   i:integer;
   TempReal:real;
begin
  ResultData:=InTreadResult;
  i:=CoreShell.TreeView1.Selected.AbsoluteIndex;
  ConstuctTree;
  CoreShell.TreeView1.Select(CoreShell.TreeView1.Items[i])
end;

Вот один из самых простых примеров вывода данных в Чарт, без математики и прочего.
for i:=1 to ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].NTVS do
  Begin
   ChartColor:=GlTuningImage.ChartTuning.Chart[i].Color;
   TVSType:=ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].TVS[i].TSVType;
   if  ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].TVS[i].TSVType>0 then
    begin
      ChartSeriesList[i].Clear;
      ChartSeriesList[i].Active:=True;
    for j:=1 to ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].NDR[TVSType] do
      begin
         X:=ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].DRHeight[TVSType][j];
         Y:=ResultData.SUZDropTimes[CoreShell.TrackBar1.Position].InTime[ScrollBar1.Position].TVS[i].DrVal[j].Value;
         ChartSeriesList[i].AddXY(X,Y,'',ChartColor);
      end;
    end;
  end;

Как там вам ещё нужна информация, как храню...

  TDisplacementDR = record
    dX,dY:Real
  end;

  TDisplacementTVS = record
    //FA:Integer;
    TypeTVS:    Byte;
    DisplDR:    array [0..22] of TDisplacementDR;
    DRWithMax:  Byte;
    DRMaxVal:   Real;
    NDr:        Integer;
  end;

  TDisplacement = record
    TimeSec:real;
    TimeDay:real;
    DisplTVS:     array [1..164] of TDisplacementTVS;
    TVSWIthMax:   array [0..10] of Byte;
    TVSMaxVal:    array [0..10] of Real;
    TSVType:      array [1..10] of Byte;
    NTVSType:     Byte;
    NTVS:         Byte;
    FilePath:     string;
  end;

  TCalc_result = record
     FilePath:     string;
     Displacemen:  array  of TDisplacement;
     DistWithMax:  array [0..10] of integer;  //максимальное значение среди всех файлов
     DistMaxVal:   array [0..10] of real;
     TSVType:      array [1..10] of Byte;
     NTVSType:     Byte;
     Max,Min:      real;
     NDisplacemenFiles:   integer;
  end;

  TDrVal = record
   // TypeTVS   :Byte;
    Value     :Real;
  end;

  TTVS = record
    DrVal     :array of TDrVal;
    WithMax   :integer;  //максимальное значение
    MaxVal    :real;
    TSVType   :Byte;
  end;

  TInTime = record
    TVS         :array [0..163] of TTVS;
    NTVS        :integer;
    DRHeight    :array [1..10,1..101] of real; //тип твс и высота LH для данного типа
    NDR         :array [1..10] of Byte;
    TimeSec     :real;
    TimeDays    :real;
    WithMax:  array [0..10] of integer;  //максимальное значение среди
    MaxVal:   array [0..10] of real;
    TSVType:  array [1..10] of Byte;
    NTVSType:     Byte;
    FilePath :string;
  end;

  TData = record
   FilePath     :string;
   InTime       :array of TInTime;
   NTime        :Integer;
   Max,Min      :real;
   WithMax:  array [0..10] of integer;  //максимальное значение среди
   MaxVal:   array [0..10] of real;
   TSVType:  array [1..10] of Byte;
   NTVSType:     Byte;
  end;

  TBars =record
    Ns      :integer;
    Value   :Real;
  end;

  TBarsTimes = record
    Timesec     :real;
    TimeDays    :real;
    SG          :Byte;
    Gaps        :array of TBars;
    NGaps       :Integer;
    FilePath    :string;
  end;

  TBarsArray =record
    NTimes: integer;
    InTime: array of TBarsTimes;
    FilePath :string;
  end;

  TBarsResult = record
    NSubBar:integer;
    SubBar: array of TBarsArray;
  end;

  TRowResult =record
    Time :  real;
    Value: array [1..15] of real;
  end;

  TMainResults = record
     RandSeed:LongInt;
     Row: array of TRowResult;
     NRow:integer;
     NValue:integer;
     Name:array [1..15] of string;
     FilePath    :string;
  end;

  TInclData = record
    Data:array of TData;
    Size:integer;
    Name:string;
    Opened:boolean;
  end;

  TResult =record
     NCalcDisp           :Integer;
     Calc_result         :array of TCalc_result;
     DisplacemenOpened   :Boolean;

     NCalcSUZForse       :Integer;
     SUZForces           :array of TData;
     SUZForcesOpened     :Boolean;

     NCalcSUZTimesDrop   :Integer;
     SUZDropTimes        :array of TData;
     SUZDropTimesOpened  :Boolean;

     NBarResult         :Byte;
     BarsResult:         array of TBarsResult;
     BarOpened:          array [0..10] of Boolean;

     NCalcMainResult     :integer;
     MainResults:         array of TMainResults;
     MainResultsOpened:   Boolean;

     DataArray: array of TInclData;
  end;

Формат хранения постоянно дорабатываю и перерабатываю, но коль просите.

Ещё есть сохранение файлов и передача параметров, но там обыграть проще.

Коль вы увидели код, можете ли вы предложить что-то, что не предлагали ранее, при этом не сводя обсуждение к качеству моего кода.
8 авг 19, 13:26    [21944653]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Gerasimenko
Андрей Игоревич,

Здесь на 52-х страницах собраны наиболее популярные вопросы по teechart

http://qaru.site/questions/tagged/teechart?page=1

возможно найдете, что искали

Спасибо, просмотрю. Хотя первый вопрос там мне понравился :)
автор
Что может привести к тому, что круговая диаграмма выйдет "хлюпать"?
.
8 авг 19, 13:28    [21944657]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Gerasimenko
Андрей Игоревич,

Здесь на 52-х страницах собраны наиболее популярные вопросы по teechart

http://qaru.site/questions/tagged/teechart?page=1

возможно найдете, что искали

Увы не нашел, но там ещё поиск есть, но пока тоже не нашел нужного, много всего, но увы не того, что икал.

Заодно раз уж умные люди в доках к лазарусу пишут сделал такую процедуру.

begin
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FPointSeparator);
  FPointSeparator.DecimalSeparator := '.';
  FPointSeparator.ThousandSeparator := '#';// disable the thousand separator
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FCommaSeparator);
  FCommaSeparator.DecimalSeparator := ',';
  FCommaSeparator.ThousandSeparator := '#';// disable the thousand separator
end;

function StringToFloat(AStr: string): Double;
begin
  if Pos(',', AStr) > 0 then Result := StrToFloat(AStr, FCommaSeparator )
  else Result := StrToFloat(AStr, FPointSeparator);
end;

И групповой заменой поменял весь StrToFloat в процедурах считывания данных (наверно тогда и везде поменяю), чем по крайней мере гарантировал считывание при изменении глобального параметра.

А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
8 авг 19, 15:10    [21944861]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Андрей Игоревич
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?

И ДА! Вот оно решение! Работает! Единственно я не умею в делфи создавать и менять шрифты, потому создал в сторонней программе шрифт.
В итоге всё так просто можно решить...
8 авг 19, 15:31    [21944888]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

пцнт упрт (С)

Posted via ActualForum NNTP Server 1.5

8 авг 19, 15:33    [21944889]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
ёёёёё
Member

Откуда:
Сообщений: 1295
Андрей Игоревич
...
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?

Это было бы прикольно. :)

Но вот еще беда: в некоторых странах требуют отделать группы десятичных разрядов пробелом, в иных - точками, или "апострофоми" ( ' ). Еще есть разные виды точек.
8 авг 19, 15:34    [21944891]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
ёёёёё
Андрей Игоревич
...
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?

Это было бы прикольно. :)

Но вот еще беда: в некоторых странах требуют отделать группы десятичных разрядов пробелом, в иных - точками, или "апострофоми" ( ' ). Еще есть разные виды точек.

Мы пока с такими странами не работаем. Будем работать - буду думать :). А вообще вы просто не представляете сколько инженеро-часов было потрачено, когда заставили во всей документации менять запятые на точки, сколько было ненависти и боли с глазах и словах людей :).
8 авг 19, 15:40    [21944902]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
alekcvp
Member

Откуда:
Сообщений: 1633
Андрей Игоревич
Андрей Игоревич
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?

И ДА! Вот оно решение! Работает! Единственно я не умею в делфи создавать и менять шрифты, потому создал в сторонней программе шрифт.
В итоге всё так просто можно решить...


Правильно, чем больше граблей сразу разложишь, тем разнообразнее секс потом будет
8 авг 19, 16:06    [21944935]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
Мимопроходящий
пцнт упрт (С)

А вы не верили в могутный потенциал! Да он нам всем ещё покажет.))
8 авг 19, 16:20    [21944949]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 16:20, Vlad F пишет:
>
> А вы не верили в могутный потенциал!
> Да он нам всем ещё покажет.))

не, не!
я в домике! (С)

Posted via ActualForum NNTP Server 1.5

8 авг 19, 16:28    [21944958]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
alekcvp
Андрей Игоревич
пропущено...

И ДА! Вот оно решение! Работает! Единственно я не умею в делфи создавать и менять шрифты, потому создал в сторонней программе шрифт.
В итоге всё так просто можно решить...


Правильно, чем больше граблей сразу разложишь, тем разнообразнее секс потом будет

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

Если же предложите менее грабельный путь, с радостью использую.
8 авг 19, 17:00    [21944990]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

Андрей, ты перфокарты застал?

Posted via ActualForum NNTP Server 1.5

8 авг 19, 17:07    [21944993]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
Андрей, ты перфокарты застал?

Нет, моё знакомство с компьютером началось с дискет 5.25 и 8цветного здоровенного монитора с маленьким экраном и защитным стеклом, хотя в то время может где-то ещё и использовали перфокарты.
Тут за флуд не карают чтоль, хотя судя по вашему объему сообщений - нет, бардакссс :).

Эххх, вы бы по делу что предложили, может есть неграбельно-безкостыльный способ?
8 авг 19, 17:16    [21945000]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
vavan
Member

Откуда: Казань
Сообщений: 3412
Андрей Игоревич, так сам же уже пришел практически к решению. абстрагировать нужную логику за фасадом своей ф-ии. если же имя менять влом то прям strtofloat и оверрайдить где требуется
8 авг 19, 17:25    [21945006]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Картинка с другого сайта.
8 авг 19, 17:32    [21945014]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 17:16, Андрей Игоревич пишет:
> Нет, моё знакомство с компьютером началось с дискет 5.25

ты не поверишь, но большинство тех, кто считают что ты профан,
в эпоху перфокарт уже таки занимались программированием.
и оттого такая оторопь берёт - неужели так низко пал уровень
подготовки researcher-ов в нонешних условиях...

Posted via ActualForum NNTP Server 1.5

8 авг 19, 17:35    [21945015]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
vavan
Андрей Игоревич, так сам же уже пришел практически к решению. абстрагировать нужную логику за фасадом своей ф-ии. если же имя менять влом то прям strtofloat и оверрайдить где требуется

Если честно, не понял о чем речь применительно к моему вопросу (рисовать точки вместо запятых в чарте не меняя логики остальной программы), как именно это сделать. Рисовать нужные мне строки поверх чарта? Какое имя менять?

Мимопроходящий
ты не поверишь, но большинство тех, кто считают что ты профан,
в эпоху перфокарт уже таки занимались программированием.
и оттого такая оторопь берёт - неужели так низко пал уровень
подготовки researcher-ов в нонешних условиях...

Это лишь говорит о крайней узости мышления и отсутствии интереса к чему-то за пределами своей сферы у таких людей (программирования в данном случае), среди моих коллег есть профессионалы колоссального уровня в своих темах, известные в своих в определенных кругах, которые обладают мизерными или даже нулевыми знаниями в программировании.
Тут же люди путают цели со средством, для инженеров и расчетчиков программирование лишь средство, им, зачастую, не нужны глубокие знания в программировании, достаточно азов, и понимание логики используемых алгоритмов. Большинство расчетных кодов, что наших, что международных имеют примитивнейший и простейший код с использованием пары десятков функций, вся сложность там в адовой математике и сложнейших методиках. И до сих пор значительная часть этих кодов не имеет никакого интерфейса, текстовые файлы и командная строка. И если вы не понимаете почему так, то это больше говорит о вас, нежели о расчетчиках.
8 авг 19, 17:57    [21945026]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
vavan
Member

Откуда: Казань
Сообщений: 3412
Андрей Игоревич
не понял о чем речь применительно к моему вопросу
я об этом:
Андрей Игоревич
групповой заменой поменял весь StrToFloat в процедурах считывания данных
8 авг 19, 18:04    [21945033]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 17:57, Андрей Игоревич пишет:
> это больше говорит о вас, нежели о расчетчиках.

расчётчики не имеющие БАЗОВЫХ знаний в программировании,
это невообразимое, немыслимое, невероятное хрен-знает-что!

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

ну так и найми себе студиоза какого-нить, пообещав толику денег/признания.
нет, ты решил что сможешь одолеть сии Хибины напролом, с нахрапа...

Иван Семеныч вынимает скрипку, засучивает рукава и отворачивает правый борт своего вицмундира.
Вице-губернатор одобрительно ожидает.
Преданный Ивану Семенычу камердинер подносит на блюдечке канифоль.
"Не надо! - говорит он. - Я всегда без канифоли".
Развертывает всем известные какие-то ноты, взмахивает смычком…
Все притаили взволнованное дыхание...

(С) Козьма Прутков.

Posted via ActualForum NNTP Server 1.5

8 авг 19, 18:17    [21945047]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
vavan
Андрей Игоревич
не понял о чем речь применительно к моему вопросу
я об этом:
Андрей Игоревич
групповой заменой поменял весь StrToFloat в процедурах считывания данных

Ааа, понял, ну это-то понятно, частично так и сделаю, но именно некостыльного алгоритма никто пока так и не предложил, всё предложенное в той или иной степени костыли. Я удивлен, что никто не предложил свой класс сделать на основании ТCHart с нужными возможностями, наиболее корректный, зато крайне неоптимальный по трудозатратам способ.
8 авг 19, 18:17    [21945049]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
08.08.2019 17:57, Андрей Игоревич пишет:
> это больше говорит о вас, нежели о расчетчиках.

расчётчики не имеющие БАЗОВЫХ знаний в программировании,
это невообразимое, немыслимое, невероятное хрен-знает-что!

Этим вы лишь показываете насколько не понимаете о чем пишите, насколько я дилетант в программировании, настолько (и даже больше) вы не понимаете о современных расчетах. Я понимаю что это ваша заводь (данный форум), и тут я позорюсь своими вопросами, но сейчас вы позоритесь для меня. Для начала изучите как сейчас делаются теплогидравлические и прочностные расчеты, каким софтом и что там программируют, конечно программирование и там тоже не помещает, но при этом не является обязательным.
8 авг 19, 18:23    [21945055]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

иди-ка ты, Анрюша, в форум "работа".
пытаться поиметь форум на халяву, по меньше мере, НЕХОРОШО.

Posted via ActualForum NNTP Server 1.5

8 авг 19, 18:27    [21945064]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
vavan
Member

Откуда: Казань
Сообщений: 3412
Андрей Игоревич, так может сгодится таки поменять разделитель глобально чтоб делалось как нужно в коде что недоступен к правке, а там где свой код - использовать фасады за к-ми делать иначе, если уж другие варианты не подходят
8 авг 19, 18:44    [21945087]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Мимопроходящий
иди-ка ты, Анрюша, в форум "работа".
пытаться поиметь форум на халяву, по меньше мере, НЕХОРОШО.

Эх, вы, так быстро сдались, а я пока домой шел такой хороший пример вам придумал, что бы объяснить, почему далеко не всем расчетчикам сейчас нужны знания в программировании, рассказать?
(дабы пресечь распространение частного на общее уточню, многим расчетчикам программирование нужно и важно, просто не всем, сейчас, наверное, уже меньшинству).
И так же не стоит обобщать про весь форум, далеко не все тут пишут столь категорические суждения, как вы с товарищем Владом Ф.

vavan
Андрей Игоревич, так может сгодится таки поменять разделитель глобально чтоб делалось как нужно в коде что недоступен к правке, а там где свой код - использовать фасады за к-ми делать иначе, если уж другие варианты не подходят

Ну я так и думал делать, пока квадратное колесо в виде шрифтов не придумал. Просто шрифты гораздо безопаснее, пару условий сделал и забыл о них, в крайнем случае просто вывод текста поломается.
А изменение глобальной переменной требует постоянно помнить о ней, дабы не произошла ошибка.

Потом, если будут силы попробую разобраться как прям в коде сделать новый шрифт и поменять в нем рисунки запятой с точкой, такой способ даже и не совсем костыль, а уже "красивое решение" будет :).
8 авг 19, 19:22    [21945110]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

08.08.2019 19:22, Андрей Игоревич пишет:
> попробую разобраться как прям в коде сделать новый шрифт и поменять в нем рисунки запятой с точкой, такой способ даже и не совсем костыль, а уже "красивое решение"

этот топег станет классикой,
на уровне BolgenOS, не менее.

Posted via ActualForum NNTP Server 1.5

8 авг 19, 19:27    [21945112]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
#define true false ?
8 авг 19, 19:40    [21945118]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
Что-то я волнуюсь за РосАтом. ;)
8 авг 19, 19:51    [21945126]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
rgreat
Что-то я волнуюсь за РосАтом. ;)

".. а ты его не чеши .." © :)

Андрей Игоревич
Эххх, вы бы по делу что предложили, может есть неграбельно-безкостыльный способ?

странный ты человек, все-таки. Просишь помощи, но даешь минимум исходной информации. На предложение дать минимальный стендовый код, на котором стопорится твое решение, ты со злорадством выкладываешь простыни кода, в котором, если кто и будет разбираться, то только за деньги. При этом ведешь себя так, как-будто делаешь этим огромное одолжение. Скажи, у тебя у самого было бы желание такому человеку помогать?

Твоя проблема решается весьма просто.
+ картинка
Картинка с другого сайта.
+ содержимое Memo с картинки
Поток: 1 (итерация 0 из 10) | число 0.550713242264464
Поток: 2 (итерация 0 из 10) | число 0.181645113741979
Поток: 1 (итерация 1 из 10) | число 0.161263296147808
Поток: 3 (итерация 0 из 10) | число 0,328247301513329
Поток: 2 (итерация 1 из 10) | число 0.517331535229459
Поток: 1 (итерация 2 из 10) | число 0.119610687484965
Поток: 3 (итерация 1 из 10) | число 0,474193396046758
Поток: 4 (итерация 0 из 10) | число 0.639030296355486
Поток: 2 (итерация 2 из 10) | число 0.500752331689
Поток: 1 (итерация 3 из 10) | число 0.640828047413379
Поток: 5 (итерация 0 из 10) | число 0,766047918004915
Поток: 3 (итерация 2 из 10) | число 0,755233797477558
Поток: 4 (итерация 1 из 10) | число 0.986820093821734
Поток: 2 (итерация 3 из 10) | число 0.276090708561242
Поток: 1 (итерация 4 из 10) | число 0.275751864537597
Поток: 5 (итерация 1 из 10) | число 0,74017467838712
Поток: 3 (итерация 3 из 10) | число 0,821260369382799
Поток: 4 (итерация 2 из 10) | число 0.633438549237326
Поток: 2 (итерация 4 из 10) | число 0.884597174357623
Поток: 1 (итерация 5 из 10) | число 0.569765430875123
Поток: 5 (итерация 2 из 10) | число 0,249314744956791
Поток: 3 (итерация 4 из 10) | число 0,876097834436223
Поток: 4 (итерация 3 из 10) | число 0.710374909453094
Поток: 2 (итерация 5 из 10) | число 0.847723793936893
Поток: 1 (итерация 6 из 10) | число 0.695017458871007
Поток: 5 (итерация 3 из 10) | число 0,979754936415702
Поток: 3 (итерация 5 из 10) | число 0,789963750168681
Поток: 4 (итерация 4 из 10) | число 0.847073224140331
Поток: 2 (итерация 6 из 10) | число 0.103741535451263
Поток: 1 (итерация 7 из 10) | число 0.308410678291693
Поток: 5 (итерация 4 из 10) | число 0,147092779166996
Поток: 3 (итерация 6 из 10) | число 0,0178005869966
Поток: 4 (итерация 5 из 10) | число 0.99436981533654
Поток: 2 (итерация 7 из 10) | число 0.824250821024179
Поток: 1 (итерация 8 из 10) | число 0.797501375200227
Поток: 5 (итерация 5 из 10) | число 0,707146640634164
Поток: 3 (итерация 7 из 10) | число 0,334044748917222
Поток: 4 (итерация 6 из 10) | число 0.105397216277197
Поток: 2 (итерация 8 из 10) | число 0.476134159136564
Поток: 1 (итерация 9 из 10) | число 0.229645318817347
Поток: 5 (итерация 6 из 10) | число 0,614905524998903
Поток: 3 (итерация 8 из 10) | число 0,159353132592514
Поток: 4 (итерация 7 из 10) | число 0.588907081168145
Поток: 2 (итерация 9 из 10) | число 0.644499710993841
Поток: 1 (итерация 10 из 10) | число 0.425723374821246
Поток: 5 (итерация 7 из 10) | число 0,692556501599029
Поток: 3 (итерация 9 из 10) | число 0,498495149193332
Поток: 4 (итерация 8 из 10) | число 0.250839089276269
Поток: 2 (итерация 10 из 10) | число 0.504331457894295
Поток: 5 (итерация 8 из 10) | число 0,473700680537149
Поток: 3 (итерация 10 из 10) | число 0,601004500407726
Поток: 4 (итерация 9 из 10) | число 0.809479599352926
Поток: 5 (итерация 9 из 10) | число 0,588040832662955
Поток: 4 (итерация 10 из 10) | число 0.799533891258761
Поток: 5 (итерация 10 из 10) | число 0,748335739132017
8 авг 19, 21:02    [21945160]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Док
rgreat
Что-то я волнуюсь за РосАтом. ;)

".. а ты его не чеши .." © :)

Андрей Игоревич
Эххх, вы бы по делу что предложили, может есть неграбельно-безкостыльный способ?

странный ты человек, все-таки. Просишь помощи, но даешь минимум исходной информации. На предложение дать минимальный стендовый код, на котором стопорится твое решение, ты со злорадством выкладываешь простыни кода, в котором, если кто и будет разбираться, то только за деньги. При этом ведешь себя так, как-будто делаешь этим огромное одолжение. Скажи, у тебя у самого было бы желание такому человеку помогать?

Твоя проблема решается весьма просто.

Если честно, не знаю стоит ли вам отвечать, если вы не желаете прочитать что я вообще спрашивал и зачем, и о каких проблемах сообщал. При этом говорите о дополнительной информации даже не прочитав начальную.
И как то что вы привели соотносится с рисованием точек в Чарте (именно в ЧАРТЕ, не на форме, не в Memo, а в Chart-e, где рисование Лейблов происходит автоматически посредством процедур и функций самого Чарта и на основании вводимых данных, а не моих floattostr или иных процедур) при одновременной работе всей остальной программы и потоков с разделителем как запятой (при этом не прописывая в каждый поток или процедуру свой разделитель). Вы ведь даже не понимаете что я спрашиваю. Зачем вам тогда код? Зачем вы мне приводите гифку, при этом даже в этом случае вы не изволили описать алгоритм(хоть он мне и не нужен), просто показывает себя? Я уже ответил, что такой вариант приемлем, но имеет свои подводные камни в моём коде.

Ну и естественно выводить строки можно хоть с точкой, хоть с запятой, хоть с крестом как разделителем, это сделать элементарно.

Ладно, пора наверно заканчивать общение тут, все местные троли видимо сюда слетелись.
Всем огромное спасибо за помощь, с радостью отвечу на любой конструктив, приму любые претензии в части программирования
На сообщения о моей или моих коллег квалификации как инженеров от людей не понимающих о чем они пишут, и о прочем не относящемся к теме вопроса отвечать не буду.
8 авг 19, 21:44    [21945190]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
Андрей Игоревич
Если честно, не знаю стоит ли вам отвечать

я думаю, не стоит. С такими претензиями лучше сразу обращатся в форум "Работа", как уже советовали выше. Когда ко мне на прием приходят такие пациенты, я им молча возращаю предоплаченные на кассе деньги и забываю о них навсегда. Удачи в работе :)
8 авг 19, 22:00    [21945201]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Vlad F
Member

Откуда:
Сообщений: 985
Мимопроходящий
08.08.2019 16:20, Vlad F пишет:
>
> А вы не верили в могутный потенциал!
> Да он нам всем ещё покажет.))

не, не!
я в домике! (С)

Да здесь даже шапочка из фольги не поможет!
Он нам все мозги ещё дотрахает окончательно, - по проявленному напору сие совершенно уже очевидно.
Не думайте, что отделались малою кровью.))
8 авг 19, 22:22    [21945211]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Андрей Игоревич> Мы пока с такими странами не работаем
Ну... я много лет работал с разными странами. И нигде таких проблем не встречал.
Ни в китаях/въетнамах, ни у арабов, ни на МДН...
8 авг 19, 22:42    [21945218]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Мимопроходящий> в эпоху перфокарт уже таки занимались программированием.

Ха! Первая моя софтинка билась на перфоленту Картинка с другого сайта.
8 авг 19, 22:48    [21945222]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Кстати в бытность мою в ВЦ АН СССР мы успешно юзали ChiWriter А.Чижова и он ёё курочил под любой наш заказ.
8 авг 19, 22:56    [21945225]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3884
Андрей Игоревич,

Назначить для оси тип метки:
Chart1.LeftAxis.LabelStyle := talText;

И обрабатывать событие:
OnGetAxisLabel

...в котором формировать метку.
8 авг 19, 23:05    [21945226]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Kazantsev Alexey
Андрей Игоревич,

Назначить для оси тип метки:
Chart1.LeftAxis.LabelStyle := talText;

И обрабатывать событие:
OnGetAxisLabel

...в котором формировать метку.

Во, вот это очень похоже на то, что нужно. Я даже не догадывался что тут есть событие на отрисовку метки, как-то не подумал даже.
Спасибо, завтра попробую.
8 авг 19, 23:17    [21945231]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1469
ёёёёё
Но вот еще беда: в некоторых странах требуют отделать группы десятичных разрядов пробелом


А бывает что и не пробелом, а символом который внешне похож на пробел, но с другим кодом.
Недавно сталкивался, правда уже забыл где конкретно.
9 авг 19, 04:09    [21945254]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Kazantsev Alexey
Андрей Игоревич,

Назначить для оси тип метки:
Chart1.LeftAxis.LabelStyle := talText;

И обрабатывать событие:
OnGetAxisLabel

...в котором формировать метку.

Даже
Chart1.LeftAxis.LabelStyle := talText;
лишнее.

И правда, всё решалось одной строчкой, просто одной строчкой, достаточно было дождаться действительно знающего человека.
procedure  TCoreShell.Chart1GetAxisLabel(Sender: TChartAxis;
 Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
   LabelText:=StringReplace(LabelText,',','.',[rfIgnoreCase]);
end;
Спасибо огромное - это именно то, что я спрашивал.
9 авг 19, 09:26    [21945314]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
rgreat
Member

Откуда:
Сообщений: 5450
А rfIgnoreCase тебе зачем? ;)
9 авг 19, 09:52    [21945336]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Док
Member

Откуда: Казань
Сообщений: 6460
rgreat,

оставь этот момент для его следующего топика :)

Андрей Игоревич
достаточно было дождаться действительно знающего человека

после таких заявлений в следующий рискуешь остаться вообще без помощников :)
9 авг 19, 09:57    [21945340]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Андрей Игоревич
Member

Откуда:
Сообщений: 229
Док
rgreat,

оставь этот момент для его следующего топика :)

Андрей Игоревич
достаточно было дождаться действительно знающего человека

после таких заявлений в следующий рискуешь остаться вообще без помощников :)

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

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

На сим всё, более отвечать (кормить) тут не буду. Всем кто отвечал по делу огромнейшее искреннее спасибо.
9 авг 19, 10:27    [21945379]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30556

мы его теряем...

Posted via ActualForum NNTP Server 1.5

9 авг 19, 10:33    [21945382]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Василий 2
Member

Откуда:
Сообщений: 799
fraks
А бывает что и не пробелом, а символом который внешне похож на пробел, но с другим кодом.
Недавно сталкивался, правда уже забыл где конкретно.

Как это где? Ord(ThousandSeparator) = 160, а не 20, как могло бы показаться с виду
9 авг 19, 10:43    [21945385]     Ответить | Цитировать Сообщить модератору
 Re: FloatToStr и знак разделителя десятичной дроби в разных системах  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3884
Андрей Игоревич
Даже
Chart1.LeftAxis.LabelStyle := talText;

лишнее

Ну не знаю, на XE2 без этого событие не генерируется.

Андрей Игоревич
достаточно было дождаться действительно знающего человека.

Я этим чартом не пользовался никогда, но 5 минут гугла решают ;)
9 авг 19, 10:46    [21945386]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5 6      [все]
Все форумы / Delphi Ответить