Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Date Format? (https://www.delphipraxis.net/149029-date-format.html)

Sanguis 12. Mär 2010 17:27


Date Format?
 
Hallo,

ich habe einen String, den ich ins TDate Format konvertiere (StrToDate). Format ist tt.mm.jjjj.
Bei mir klappt es, andere User bekommen aber die Fehlermeldung "Invalid Date". Ich kann das leider nicht reproduzieren, weiß also nicht, was das ist. Ich habe das Format tt/mm/jjj und tt-mm-jjjj getestet, funktioniert bei mir nicht.

Gruß,
Andreas

Luckie 12. Mär 2010 17:35

Re: Date Format?
 
Was heißt funktioniert nicht? Wie liegt auf den anderen Rechnern das Datum vor?

fatalerror 12. Mär 2010 17:54

Re: Date Format?
 
verwende eine Absicherung mit Try Except oder direkt die Funktion TryStrToDate

Delphi-Quellcode:
begin
  if TryStrToDate(Datum.Text, Datum) then  
       mache_etwas_mit_dem_Datum(Datum)
    else
       ShowMessage(Format('"%s" Sie haben kein gültiges Datum angegeben', [Datum.Text]));
end;

Sanguis 12. Mär 2010 18:05

Re: Date Format?
 
Funktioniert nicht heißt, es kommt der "Invalid Date"Error.
Ich versuch es mal mit TryStrToDate. Aber was mach ich, wenn es nicht geht? Bei mir klappt ja alles, bei anderen nicht.

Gruß,
Andreas

samso 12. Mär 2010 18:16

Re: Date Format?
 
StrToDate ist von der Ländereinstellung abhängig. Wenn das Datums-Format aber fix "tt.mm.jjjj" ist, dann wird die Umwandlung nicht funktionieren, wenn die Ländereinstellung beim User anders ist. Also muss das Datumsformat an die Ländereinstellung angepasst werden, oder man muss sich seine eigene StrToDate schreiben.

Sanguis 12. Mär 2010 18:24

Re: Date Format?
 
Geht das irgendwie automatisch?

Ich programmier ne art WrestlingSim. Bekannt in dem Bereich, ist schon das Spiel EWR. Das setzt allerdings englische Spracheinstellungen vorraus.

daywalker9 12. Mär 2010 18:26

Re: Date Format?
 
Schau dir mal das an:
Delphi-Quellcode:
TFormatSettings = record
   CurrencyFormat: Byte;
   NegCurrFormat: Byte;
   ThousandSeparator: Char;
   DecimalSeparator: Char;
   CurrencyDecimals: Byte;
   DateSeparator: Char;
   TimeSeparator: Char;
   ListSeparator: Char;
   CurrencyString: string;
   ShortDateFormat: string;
   LongDateFormat: string;
   TimeAMString: string;
   TimePMString: string;
   ShortTimeFormat: string;
   LongTimeFormat: string;
   ShortMonthNames: :TFormatSettings.:1;
   LongMonthNames: :TFormatSettings.:2;
   ShortDayNames: :TFormatSettings.:3;
   LongDayNames: :TFormatSettings.:4;
   TwoDigitYearCenturyWindow: Word;
Damit kannst du sagen wie das Datum, Zeit auszusehen hat bei jedem Aufruf von DateToStr..

ODer du setzt die Sachen beim Programmstart für alle Ding fest:
Delphi-Quellcode:
  if not sametext(ShortDateFormat, 'dd.MM.yyyy') then
    begin
      ShortDateFormat := 'dd.MM.yyyy';
      LongDateFormat := 'dddd, d. MMMM yyyy';
      DateSeparator  := '.';

      ShortTimeFormat   := 'hh:mm';
      LongTimeFormat := 'hh:mm:ss';
      TimeSeparator  := ':';
      TimeAMString   := '';
      TimePMString   := '';
    end;

Sanguis 12. Mär 2010 19:21

Re: Date Format?
 
Hallo,

ich habe das in das onCreate der Hauptform gesetzt. Allerdings ist mein Datum jetzt immer 30.12.1899?

Gruß,
Andreas

Sanguis 12. Mär 2010 20:56

Re: Date Format?
 
Ok, war mein Fehler. Hatte die falsche Variable genommen, nu gehts. Danke :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz