Własny format daty

1

Witam!

Mam pewien problem, otóż w programie używam formatu daty dd.mm.yyyy oraz hh:mm, niezależnego od systemu.

Ustawiam to w OnCreate głównej formy:

  DateSeparator:='.' ;
  ShortTimeFormat:= 'hh:mm';
  LongTimeFormat:= 'HH:MM';
  ShortDateFormat:='dd.mm.YYYY';
  LongDateFormat:='DD.MM.YYYY';

Jednak czasem, w losowych momentach, program przestaje widzieć tą datę jako poprawną, i m.in. StrToDate wywala wtedy exception, po restarcie aplikacji znowu wszystko jest OK.

Zmagam się z tym problemem już od dawna i w dalszym ciągu nie mogę znaleźć rozwiązania.

Mam procedurę przechwytującą wyjątki i gdy pojawi się ten dotyczący daty to jeszcze raz wywołuje powyższy kod, ale to już wtedy nie pomaga.

Ma ktoś jakieś pomysły?

Pozdrawiam.

EDIT:
Znalazłem coś takiego:

Application.UpdateFormatSettings := False;

Może pomoże, ciężko to sprawdzić, bo problem występuje losowo.

EDIT2:
Udało mi się znaleźć sposób na sprawdzenie tego. Otóż zmiana formatu daty w systemie powodowała zmianę formatu w programie. Dzięki powyższemu rozwiązaniu problem ustępuje.

0

Ciekawe nie znałem tego.

Do tej pory tworzyłem swoje "FS" różne do różnych celów. Używałem je w zależności od potrzeby zawsze podając w funkcjach ten który był potrzebny.
(Poniższy kod z pamięci więc mogą być błędy)


var
    fsSQL : TFormatSettings; // ustawienia dla SQLa
    fsDef : TFormatSettings;  // ustawienia Programu
begin
    fsSQL.DateFormat := 'yyyymmdd';
    fsSQL.Dateseparator := #0;

    fsDef.DateFormat := 'dd.mm.yyyy';
    fsDef.Dateseparator := '.';
end;

i w zależności czy robiłem datetostr(now(),fsSQL) dla SQL czy dla wydruku to w parametrze zawsze podawałem fsDef lub fsSQL.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0