SysUtils.ShortDateFormat проблем

10 отговора 282 прегледа
#1

SysUtils.ShortDateFormat проблем

При стартиране на програмата сетвам SysUtils.ShortDateFormat.
На някои Windows "В избран момент" настъпва някакво събитие което го ресетва на системните настройки (например грешка при запис на дискета,
върху 2003 като терминал клиент, след около 10 минути винаги го ресетва).
Как се забранява тая гадост(Идеята да сложа един таймер и да сетвам на няколко секунди ми изглежда голяма мърлящина).

Отговор
в отговор на toni #2

TApplication.UpdateFormatSettings

Трябва да установиш UpdateFormatSettings := False.

Отговор
в отговор на toni #3

Грешката е в системата :)

Грешката е в системата :)
Много лош стил е да променяш състемните настройки от твоята програма.
Не виждам причина на някой някога да се наложи да го прави - ще споделиш ли кое те накара да си толкова "хитър"?

Отговор
в отговор на NikB #4

Re: Грешката е в системата :)

аз малко поизостанах от Delphi-то, ама
SysUtils.ShortDateFormat
не е ли вътрешна /за приложението/ променлива?

Am I evil?
Yes I am.
Отговор
в отговор на Hateras #5

Да, прав си

Да, прав си, в действителност още в инициализацията на SysUtils (секция Initialization) ShortDateFormat се зарежда посредством GetLocaleInfo и е чудно как се променя по време на изпълнение (според твърдението).

Отговор
в отговор на NikB #6

Re: Да, прав си

Прав е човека... Само който не е писал приложения дето работят на хиляди машини, може да се доверява на 100% на това което е написано в хелповете...
Що коса ми побеля, от един скриинсавер, който при включването си, променяше настройките на приложението ми, и вместо CurrencyString = 'лв', ставаше $, и вместо DecimalSeparator = '.' ставаше запетая, та гърмяха разни нещица...
Но ето това разреши проблема, та вече няма проблеми:


unit XXXXXXXX.
uses ..........

implementation
.....

initialization
ShortDateFormat := 'dd/mm/yyyy';
LongdateFormat := 'dd/mm/yyyy';
DateSeparator := '/';
DecimalSeparator := '.';
ThousandSeparator := char(160);
CurrencyString := 'лв';
CurrencyFormat := 3;
NegCurrFormat := 8;
CurrencyDecimals := 2;
ShortTimeFormat := 'hh:mm';
LongTimeFormat := 'hh:mm:ss';
Application.UpdateFormatSettings:=False;
end.


Отговор
в отговор на NikB #7

WM_WININICHANGE, WM_SETTINGCHANGE

При зареждане на програмата тези неща се инициализират, но по време на работа ако се получи WM_WININICHANGE (или WM_SETTINGCHANGE) те се прочитат наново. А кой го праща в случая това съобщение и защо е съвсем друг въпрос
ПП Мразя дир.бг

Отговор
в отговор на andrew_nikoloff #8

Re: WM_WININICHANGE, WM_SETTINGCHANGE

Хе-хе-хе....
Тъй де... Аз и затова съм си написал една процедурка, за всеки случай, наречена BeginBG, която си я изпълнявам преди всяко записване в бази разни... съществува риска по време хилядната от секундата да смени някой нещо, ама...
А защо мразиш дир.бг.... аз щото никой не мразя и никой не тача или милея...

Отговор
в отговор на Ивaнчo #9

Re: WM_WININICHANGE, WM_SETTINGCHANGE

Ами те затова са си сложили хората пропъртито дали приложението ти да си обновява стойностите или не.
А за дир-а - с всеки изминал ден писането в клуба ми коства все повече нерви... Разбирам, че са им натоварени сървърите в пиковите часове, ама да вземат да си пооправят нещата де! Като ще предлагат някаква услуга (била тя безплатна или не) поне да е работеща...

Отговор
в отговор на Ивaнчo #10

Re: Да, прав си

Ти май предпочиташ да изнасилваш юзера да работи с "твоите" регионални настройки, вместо да си направиш труда да си направиш приложението както трябва.
Уважавай правото на избор на юзера и той ще те обича

Впрочем, стойностите ти са ужасно несъответстващи на никакъв стандарт и традиции за България. Особено е гаден дванадесетчасовия формат за време.

Отговор
в отговор на andrew_nikoloff #11

За Дир-а :)

Това, че са безплатни и натоварени, може би е естествено :) - ама що като не ми приеме поста и затрива въведеното - много ме дразни.
Може би в 1/5 от случеите се налага да пиша втори път, а даже и да се прежаля, винаги е по-небрежно :)
Освен, ако не съм забравил да по копна в клиборда.
И аз ги мразя

Отговор