Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизDecimalSeparator !! ????? Найти похожие ветки
← →
Serge © (2004-04-16 16:10) [0]Привет всем! Возник у меня вопрос относительно сабжа. Есть програмка работающая с БД ДБИСАМ (для справки), работает на компе с Win98 Russian.
При старте я указываю явно DecimalSeparator - ".", в системе разделителем стоит ","
Все хорошо и отлично до определенного момента когда разделитель "." самопроизвольно меняется на системный "," ( из программы я его не меняю 100% ). Почему возникает такая ситуация ?
P.S.У меня уже будет рак мозгов от этого - бо програмка работает с фискальным принтером и там если что не так - не отменишь операции. Сейчас я вынужден ставить по всей программе надо не надо разделитель на ".".
← →
Reindeer Moss Eater © (2004-04-16 16:17) [1]Application.UpdateformatSettings
← →
Андрей Сенченко © (2004-04-16 16:22) [2]В этом есть одно достоинство - возврат ошибочно пробитого ( по КМ-3 ) скорее всего тоже подцепит неверный сепаратор и вернет правильную сумму :)
← →
Serge © (2004-04-16 16:50) [3]The Application variable’s UpdateFormatSettings method either allows or disallows changes in system settings. The default is True. Set this property to False to prevent the system settings from changing. - я не понял, можно заблокировать изменнеие системных настроек для системы целиком или для отдельного приложения, то есть если я в одной программе ставлю DecimalSeparator:="." then UpdateFormatSettings:=False то в другой DecimalSeparator:="," не поменяет разделитель ???
← →
Anatoly Podgoretsky © (2004-04-16 16:51) [4]Serge © (16.04.04 16:10)
Эта переменная не потоко безопасна
← →
Reindeer Moss Eater © (2004-04-16 16:58) [5]DecimalSeparator это всего лишь глобальная переменная модуля SysUtils.
И Application.UpdateformatSettings:=False; приводит к тому, что её значение не подвергается модификации при смене настроек в Windows.
Значение глобальной переменной не меняется, а вовсе не смена настроек Windows запрещается
← →
Serge © (2004-04-16 16:58) [6]From MSDN -
In general, when you receive this message < WM_WININICHANGE >, you should check and reload any system parameter settings that are used by your application.
Получается что нужно ловить WM_WININICHANGE либо использовать TApplication.CheckIniChange - что бы следить за изменениями в системе и соответсвенно реагировать ???
← →
Reindeer Moss Eater © (2004-04-16 17:02) [7]Ёкарный бабай.
Хочешь - лови кайф или сообщение WM_WININICHANGE .
Но тебе же в первом же посте сказали как решить проблему в стиле ООП Delphi не залезая в дебри Win32 API
← →
Serge © (2004-04-16 17:02) [8]С вопросом я опоздал маленько :) - связь знаете ли...
> Reindeer Moss Eater © (16.04.04 16:58) [5]
А из отрывка хелпа в [3] я понял совсем другое :(
С-с-ы-ы-пасибо (С) "Жил был пес"
← →
Serge © (2004-04-16 17:04) [9]> Reindeer Moss Eater © (16.04.04 17:02) [7]
Я уже понял, не надо нервничать :)
Еще раз спасибо.
← →
Serge © (2004-04-16 17:08) [10]function TApplication.CheckIniChange(var Message: TMessage): Boolean;
begin
Result := False;
if (Message.Msg = RM_TaskbarCreated) or
(Message.Msg = WM_WININICHANGE) then
begin
if UpdateFormatSettings then
begin
SetThreadLocale(LOCALE_USER_DEFAULT);
GetFormatSettings;
end;
:)))) воочию убедился я, прозрел :))))
if UpdateMetricSettings then
Screen.GetMetricSettings;
if Message.Msg = RM_TaskbarCreated then
begin
Screen.ResetFonts;
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.03 c