Maker napisał(a)
ale w aplikacji mozna te ustawienia nadpisac uzywajac wlasnie tych zmiennych "srodowiskowych"
Racja, mozna wpisać kod kontroli nad nietypowymi ustawieniami. Tylko że w podanym przykładzie go nie widac . Poza tym moja wersja z EncodeTime załatwia jak sądzę sprawę bezpiecznie i bez pisania dodatkowego kodu.
Stealth napisał(a)
W sumie zawsze gdzieś na jakimś systemie można przetestować kto ma rację z tym formatem godziny czy będzie wywalać program
Sprawdziłem już wczoraj, wywala się.
MarkusB napisał(a)
Mysle, ze to najlepsza z dotychczasowach propozycji.
Będę sie jednak upierał ze najlepsza jest moja. Pomijając nawet kwestie nietypowych formatów.
TDateTime jest naprawdę wartością double, której część całkowita reprezentuje Date a ułamkowa Time. Moja wersja wprost porównuje tą wartość z wartością graniczną (23:00) albo wyliczoną w najprostszy sposób przez EncodeTime, albo nawet podaną jako stała.
Wasze wersje idą doookoła albo przez konwersję do stringów, albo przez wielokrotne porównania: każdego składnika czasu oddzielnie.
I jeszcze nastepujące niezreczności:
and (Min >= 0) and (Sek >= 0))
Po co? W konkretnym wypadku równej fodziny ta część kodu jest niepotrzebna bo ani Min ani Sek nie mogą być mniejsze od 0.
Present := Now;
DecodeTime(Present, Hour, Min, Sek, MSec);
Po co zmienna Present? Nie prościej:
DecodeTime(Now, Hour, Min, Sek, MSec);