powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FloatToStr и знак разделителя десятичной дроби в разных системах
25 сообщений из 131, страница 4 из 6
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846713
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичЯ попробовал ВСЁ, что предложено, Зачем вы это пишите?
Вот честно пытался найти на всех трех страницах хоть строчку из твоего кода, воспроизводящего обсуждаемую проблему. Не нашел. Только плач Ярославны и капризы, что все время подсовывают не то. Так какую ты помощь ждешь от окружающих?
[spoiler][youtube=
YouTube Video
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846716
Развели тут оффтопа, модератора на нас нет.
Возможно моя ошибка в том, что я продолжил старую тему с новым вопросом, вместо открытия новой, что вводит людей в заблуждение, почему опять обсуждают такой простой и решенный вопрос.
Распишу то, что я спрашивал ещё раз более подробно.
Мне нужно, что бы в программе менялся разделитель дробной части (запятая - точка) "на лету", то есть без смены его в системе, в графиках и выводе текста на канву. Зачем и почему - писал выше. Для примера пара картинок:
с запятыми

с точками

]

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

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

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

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

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

Ещё дальше вы написали
ДокПарень, придержи коней. Народ на форуме не виноват в том, что из трех страниц обсуждения ты практически так и не удосужился хоть что-то попробовать или хотя бы почитать о предложенном Как я уже писал выше, я внимательно прочитал всё предложенное и всё попробовал, за исключением Val() и Str(), так как не знаю как их применить к Лейблам чарта.
Теперь вы просите привести код,
ДокВот честно пытался найти на всех трех страницах хоть строчку из твоего кода, воспроизводящего обсуждаемую проблему. Не нашел. Только плач Ярославны и капризы, что все время подсовывают не то. Так какую ты помощь ждешь от окружающих?
Я готов, какой код вам нужен и зачем? Что там должно быть?
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846717
Андрей Игоревич
Мне нужно, что бы в программе менялся разделитель дробной части (запятая - точка) "на лету", то есть без смены его в системе, в графиках и выводе текста на канву.
Очень коряво написал, подразумевается - без смены в системе, без смены в остальных потоках, но со сменой вывода на графики Чарта и TextOut канвы.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846761
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичЯ готов, какой код вам нужен и зачем? Что там должно быть?
обычно прикладывают минимальный код, воспроизводящий проблему или показывающий, что хотелось, но не получилось. Вряд ли за тебя его кто-то будет здесь писать, угадывая исходные условия (жаль, в нашей ветке нет подобного этому сообщения 1991850 ).

Картинки же твои - ни о чем, такие же можно нарисовать и в Экселе. Вот если бы ты написал, в каком виде ты получаешь и хранишь данные, по какому условию определяшь вид десятичного разделителя, как из доп. потока отправляешь данные в TChart для отображения, тогда и дальнейший разговор пошел бы гораздо продуктивнее.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846785
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

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

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

возможно найдете, что искали
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846794
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, задачу можно решить разными способами, но большая часть из них - костыли. Корректный способ - это в спеке формата файлов прибить гвоздями разделитель и при общении с файлами применять функции с параметром FormatSettings (к тому же, если вдруг понадобится обмениваться файлами с забугорьем - в программе будет достаточно поменять только один символ); графики же выводить с системным разделителем. Пока на поставленную задачу этого достаточно.

Имплантация FormatSettings может быть муторной и геморной, если до этого код писали абы как ("о, а что, в мире используется букв больше, чем 127???" (с) американцы после стандартизации таблицы ASCII), но это надо.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846846
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.08.2019 10:05, Василий 2 пишет:
> Собственно, задачу можно решить разными способами

не взлетит.
тут программист нужен. (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846848
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий08.08.2019 10:05, Василий 2 пишет:
> Собственно, задачу можно решить разными способами

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

Do or die trying!
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846850
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.08.2019 11:21, Василий 2 пишет:
> Do or die trying!

don't try, die right away.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846958
ДокАндрей ИгоревичЯ готов, какой код вам нужен и зачем? Что там должно быть?
обычно прикладывают минимальный код, воспроизводящий проблему или показывающий, что хотелось, но не получилось. Вряд ли за тебя его кто-то будет здесь писать, угадывая исходные условия (жаль, в нашей ветке нет подобного этому сообщения 1991850 )..
Зачем, ну зачееем??? Если вся проблема по сути описывается одной фразой:
"Как корректно менять дробный разделитель в коде программы для отдельных задач".
Всё остальное это частности, сейчас я фалы открыл одним способом, завтра научился делать это лучшим способом, переделал и всё сломалось, сейчас использую одно, потом - другое. Если я ищу корректный способ, он не должен от этого зависеть. Вот вам код описывающий всю суть проблемы:
Код: pascal
1.
if CheckBox1.Checked then DecimalSeparator:=',' else DecimalSeparator:='.';



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

ДокВот если бы ты написал, в каком виде ты получаешь и хранишь данные, по какому условию определяшь вид десятичного разделителя, как из доп. потока отправляешь данные в TChart для отображения, тогда и дальнейший разговор пошел бы гораздо продуктивнее.
Абсолютно ненужная для данного обсуждения информация которая с высокой степенью вероятности приведет к обсуждению моего кода, а не изложенного вопроса. Но давайте, мне не сложно:
кодКусочек кода отвечающий за считывание одного типа файлов:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
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;


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

Вот так передаются в основной поток откуда уже рисуются чартом и другими рисвальщиками в главном потоке или других.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
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;


Вот один из самых простых примеров вывода данных в Чарт, без математики и прочего.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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;


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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
  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;


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

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

Коль вы увидели код, можете ли вы предложить что-то, что не предлагали ранее, при этом не сводя обсуждение к качеству моего кода.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39846962
GerasimenkoАндрей Игоревич,

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

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

возможно найдете, что искали
Спасибо, просмотрю. Хотя первый вопрос там мне понравился :) авторЧто может привести к тому, что круговая диаграмма выйдет "хлюпать"?.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847069
GerasimenkoАндрей Игоревич,

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

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

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

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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 в процедурах считывания данных (наверно тогда и везде поменяю), чем по крайней мере гарантировал считывание при изменении глобального параметра.

А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847080
Андрей ИгоревичА я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
И ДА! Вот оно решение! Работает! Единственно я не умею в делфи создавать и менять шрифты, потому создал в сторонней программе шрифт.
В итоге всё так просто можно решить...
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847081
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пцнт упрт (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847083
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич...
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
Это было бы прикольно. :)

Но вот еще беда: в некоторых странах требуют отделать группы десятичных разрядов пробелом, в иных - точками, или "апострофоми" ( ' ). Еще есть разные виды точек.
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847087
ёёёёёАндрей Игоревич...
А я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
Это было бы прикольно. :)

Но вот еще беда: в некоторых странах требуют отделать группы десятичных разрядов пробелом, в иных - точками, или "апострофоми" ( ' ). Еще есть разные виды точек.
Мы пока с такими странами не работаем. Будем работать - буду думать :). А вообще вы просто не представляете сколько инженеро-часов было потрачено, когда заставили во всей документации менять запятые на точки, сколько было ненависти и боли с глазах и словах людей :).
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847105
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ИгоревичАндрей ИгоревичА я вот подумал, а нельзя ли пойти на небольшой обман и создать свой шрифт, в котором точку поменять местами с запятой и при выборе галочки просто подключать это шрифт?
И ДА! Вот оно решение! Работает! Единственно я не умею в делфи создавать и менять шрифты, потому создал в сторонней программе шрифт.
В итоге всё так просто можно решить...

Правильно, чем больше граблей сразу разложишь, тем разнообразнее секс потом будет
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847112
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпцнт упрт (С)

А вы не верили в могутный потенциал! Да он нам всем ещё покажет.))
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847117
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.08.2019 16:20, Vlad F пишет:
>
> А вы не верили в могутный потенциал!
> Да он нам всем ещё покажет.))

не, не!
я в домике! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847130
alekcvpАндрей Игоревичпропущено...

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

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

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

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

Эххх, вы бы по делу что предложили, может есть неграбельно-безкостыльный способ?
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847143
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич, так сам же уже пришел практически к решению. абстрагировать нужную логику за фасадом своей ф-ии. если же имя менять влом то прям strtofloat и оверрайдить где требуется
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847148
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FloatToStr и знак разделителя десятичной дроби в разных системах
    #39847149
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
08.08.2019 17:16, Андрей Игоревич пишет:
> Нет, моё знакомство с компьютером началось с дискет 5.25

ты не поверишь, но большинство тех, кто считают что ты профан,
в эпоху перфокарт уже таки занимались программированием.
и оттого такая оторопь берёт - неужели так низко пал уровень
подготовки researcher-ов в нонешних условиях...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 131, страница 4 из 6
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FloatToStr и знак разделителя десятичной дроби в разных системах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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