Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Изменить системный разделитель целой части числа от дробной

Delphi , Синтаксис , Типы и Переменные

Изменить системный разделитель целой части числа от дробной

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure SetDecimalSeparator(Ch: Char);
 var
   DefLCID: LCID;
   Buffer: LPSTR;
 begin
   Application.UpdateFormatSettings := True;
   StrPCopy(Buffer, Ch);
   DefLCID := GetThreadLocale;
   if SetLocaleInfo(DefLCID, LOCALE_SDecimal, Buffer) then
     DecimalSeparator := StrPas(Buffer)[1];
   Application.UpdateFormatSettings := False;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   SetDecimalSeparator('.');
 end;

Перевод текста на русский язык:

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

Вот как работает код:

  1. Процедура SetDecimalSeparator принимает одиночный параметр Ch, который будет использоваться в качестве нового разделителя десятичной точки.
  2. Внутри процедуры Application.UpdateFormatSettings устанавливается в значение True. Это позволяет приложению обновить свои настройки форматирования.
  3. Создается буферный строковый объект Buffer и заполняется значением Ch.
  4. Текущий локаль (локаль потока) получается с помощью функции GetThreadLocale.
  5. Функция SetLocaleInfo вызывается с текущей локалью, LOCALE_SDecimal (который указывает на разделитель десятичной точки), и Buffer. Это устанавливает новый разделитель десятичной точки для системы.
  6. Если операция была успешна, новый разделитель десятичной точки получается из буфера с помощью StrPas( Buffer )[1].
  7. Наконец, Application.UpdateFormatSettings устанавливается в значение False, что возвращает настройки форматирования приложения к их исходному состоянию.

Процедура Button1Click вызывает SetDecimalSeparator с аргументом точка (.), эффективно изменяя разделитель десятичной точки в системе.

Однако, код может не работать как ожидалось, потому что он устанавливает локаль для всего потока. Это может потенциально вызвать проблемы, если другие части вашего приложения зависят от умолчательной локали. Лучше использовать свойство FormatSettings вместо:

procedure TForm1.Button1Click(Sender: TObject);
begin
  FormatSettings.DecimalSeparator := '.';
end;

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

Статья описывает изменение системного разделителя целой части числа от дробной в Delphi с помощью процедуры SetDecimalSeparator, которая позволяет изменить символ разделения для чисел.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Типы и Переменные ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 07:03:48/0.0069491863250732/2