175 / 65 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
1

Как временно изменить значение десятичного разделителя в системе?

10.10.2019, 19:03. Показов 3180. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Сохранить текущий десятичный разделитель существующий в системе в настоящее время
2. Подменить его на точку.
3. Выполнить ряд операций над вещественным числом, например вывести его в форматированном виде в метку на форме
4. Вернуть текущий десятичный разделитель на тот, который был в системе до наших манипуляций
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2019, 19:03
Ответы с готовыми решениями:

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

Как получить знак десятичного разделителя для текущей культуры
Как получить знак десятичного разделителя для текущей культуры? Добавлено через 27 минут Ответ:...

Как преобразовать строку в число без учёта десятичного разделителя?
В системе установлен десятичный разделитель <запятая>. В строке сформировано число 2,5...

Замена десятичного разделителя
Здравствуйте! Возникла следующая проблема: Требуется, чтобы у дробных чисел десятичный...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
10.10.2019, 19:15 2
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Использовать специальные функции для конвертации вещественных значений в строку и наоборот.

Строка -> Число:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  v : Double;
  fs : TFormatSettings;
begin
  fs := DefaultFormatSettings;
  s := '1.234';
  fs.DecimalSeparator := '.'; // системный разделитель при этом не меняется, только в копии. Возвращать ничего не нужно
  v := StrToFloat(s, fs); // Ok
 
  s := '1,234';
  fs.DecimalSeparator := ',';
  v := StrToFloat(s, fs); // Ok
end;
Обратно - аналогично.
0
882 / 584 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
11.10.2019, 18:45 3
А что значить "в системе"? Может просто поменять у DefaultFormatSettings ещё перед Application.Run();?
0
175 / 65 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.10.2019, 13:49  [ТС] 4
volvo, как добиться чтобы в текстовый файл записалось число именно с точкой как с десятичным разделителем?
Вариант:
Delphi
1
2
3
4
5
    fs:= DefaultFormatSettings;
    fs.DecimalSeparator := '.';
    v:= 12.345;
    WriteLn(f, FloatToStr(v));
    fs.DecimalSeparator := ',';
не проходит.

Добавлено через 19 минут
вот так кажется срабатывает:
Delphi
1
2
3
4
    DecimalSeparator := '.';
    v:= 12.345;
    WriteLn(f, FloatToStr(v));
    DecimalSeparator := ',';
но вываливаются предупреждения: Symbol DecimalSeparator is depricated
как сделать, то что я хочу не устаревшими методами?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
12.10.2019, 13:59 5
Цитата Сообщение от jkrnd Посмотреть сообщение
но вываливаются предупреждения: Symbol DecimalSeparator is depricated
Издеваешься? Я же написал, что ОБЕ конвертирующие функции могут принимать вторым параметром структуру:

Pascal
1
2
3
4
  fs := DefaultFormatSettings;
  fs.DecimalSeparator := '.';
  v:= 12.345;
  WriteLn(f, FloatToStr(v, fs));
Добавлено через 2 минуты
Почему ты не пишешь через TStringList - я до сих пор не понимаю. В Билдере у тебя получалось лучше, там ты Сишных функций не использовал для записи в файл. Почему здесь используешь то, что досталось в наследство от Турбо-Паскаля - непонятно.
1
175 / 65 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.10.2019, 15:11  [ТС] 6
Цитата Сообщение от volvo Посмотреть сообщение
Издеваешься?
и не думал, извиняюсь. Просмотрел второй параметр.

Не по теме:

Объясняю почему я не пишу через TString.
Начал пробовать Lazarus открыв книгу Мансуров К.Т. - Основы программирования в среде Lazarus. Цель: понять преимущества Паскаля перед С++. Изучение быстро наскучило. Придумал конкретную задачу:
Считывать из текстовых файлов часовых ведомостей теплотехнических параметров данные и преобразовывать их в xls-файлы. Файлы ведомостей создаются программой на VB-6. Формат файлов не менялся более 20 лет. Просматривались и редактировались они (данные) также в программе на VB-6. В управлении к сожалению принимают информацию только в виде офисных документов. Начал с работы с файлами. В первую очередь задался целью записать на паскале в текстовый файл строки в формате ведомости.

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32592 / 21061 / 8134
Регистрация: 22.10.2011
Сообщений: 36,332
Записей в блоге: 8
12.10.2019, 15:24 7
Цитата Сообщение от jkrnd Посмотреть сообщение
Начал с работы с файлами. В первую очередь задался целью записать на паскале в текстовый файл строки в формате ведомости.
Для того, чтобы начать работу с файлами, если никогда этого ранее не делал на этом языке - нужно как минимум иметь источник информации. Причем источник должен быть: 1) современным 2) написан человеком, который СПОСОБЕН осилить что-то новое, а не тем, кто прилип к 30-летнему Турбо-Паскалю, поскольку больше ничего не может или не хочет узнавать, ибо книга, написанная этим человеком будет мягко говоря, бесполезна, а то и вообще вредна. Так что для начала - надо искать хорошую книгу по Лазарусу (или по Дельфи, но тоже что-то более современное, а не времен Дельфи 5/Дельфи 6).
1
175 / 65 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
12.10.2019, 15:27  [ТС] 8
Цитата Сообщение от volvo Посмотреть сообщение
хорошую книгу по Лазарусу
посоветуйте пожалуйста
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2019, 15:27
Помогаю со студенческими работами здесь

Проблема с настройками десятичного разделителя
Возникла проблема программного конструирования SQL-строки: Десятичным разделителем на моем...

Замена символа десятичного разделителя в TextBox
Помогите решить проблемку с преобразованием значений в тип который воспринимает запятую. Есть 9 -...

Как создать, или изменить, url php-файла временно
PHP как создать, или изменить url, php файла временно суть проста например задача такая по...

Как определить, сколько разрядов в двоичной системе требуется для записи десятичного числа n?
Как определить, сколько разрядов в двоичной системе требуется для записи десятичного числа n?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru