Jak złożyć datę z integerów?

0

Pracuję, na dwóch różnych komputerach. Na głównym mam w pliku daty w formacie 'dd.mm.yyyy'. Niestety dla drugiego komputera ten format daty jest nieczytelny. Z tego powodu zmieniłem w pliku tekstowym format daty na 'yyyy-mm-dd'. Zadziałało, ale po przeniesieniu się na komputer główny tym razem tam format daty był nieczytelny. Tak więc wróciłem do pierwotnego formatu.

Dziś znowu drugi komputer nie może odczytać daty przy użyciu StrToDate();. W takiej sytuacji pomyślałem, że napiszę własną funkcję która będzie konwertować mi taki format zawszę na datę, bez względu na komputer.

Póki co wyciągnąłem ze Stringa 3 zmienne Dzien, Miesiac, Rok typu Integer. Jednak nie mogę wymyślić jak teraz złożyć z nich datę, tak by nie było problemów na żadnym komputerze :/

1

Trzymaj zmienną z datą jako TDate/TDateTime w programie i używaj funkcji: FormatDateTime do wyświetlania jako string.

0

Problem w tym, że ja mam datę zapisaną w pliku tekstowym więc jak ją odczytuję to jest Stringiem i z wyświetleniem nie mam problemu, bo to String. Ale ja chcę skonwertować ją na typ TDateTime poprzez StrToDate i tu się pojawia problem `EConverError "15.10.2015" is not a valid date format`

1

No to masz TFormatSettings, gdzie możesz określić format

0

Nic to nie dało, albo nie potrafię tego użyć.

Ale za to znalazłem funkcję EncodeDate();, która jest dokładnie tym czego szukałem, mając 3 zmienne liczbowe reprezentujące dzień, miesiąc i rok.

1

@dani17 - znalazłeś rozwiązanie dla problemu, który sam sobie stworzyłeś;

Prawidłowym i sensownym rozwiązaniem jest skorzystanie np. z pary funkcji DateToStr i StrToDate; W razie czego dostępny jest wariant z możliwością podania własnego rekordu typu TFormatSettings.

0

Ale ja korzystałem z StrToDate i na jednym komputerze to działało, a na drugim nie. Na trzecim mogłoby działać, a na czwartym znowu nie. W tym momencie sobie stworzyłem rozwiązanie które zadziała zawsze.

0

Bo na tych dwóch komputerach mogą być różne dane dotyczące formatowania łańcuchów znaków zawierających zapis daty i/lub czasu; No to ustal wartość pola DateSeparator w rekordzie typu TFormatSettings i przekaż taki rekord do funkcji;

Edit: Ewentualnie sprawdź dlaczego <abbr title="użyj debuggera, potestuj różne warianty">dokładnie</abbr> tworzony jest wyjątek; Możliwe, że to nie DateSeparator jest niedobry - sam format daty może się nie zgadzać (LongDateFormat lub ShortDateFormat).

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