Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.031 c
3-1081001165
Nous Mellon
2004-04-03 18:06
2004.05.02
Обновление БД


1-1082099277
ghg
2004-04-16 11:07
2004.05.02
динамические массивы из Delphi в фортрановскую dll


7-1078480371
visualman
2004-03-05 12:52
2004.05.02
Срочно нужен ДОК


1-1082026092
iVovs
2004-04-15 14:48
2004.05.02
ShellApi - удаление всех файлов из каталога


7-1079083787
Term
2004-03-12 12:29
2004.05.02
Как определить раскладку клавиатуры?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский