Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Double und TDateTime 'delokalisiert' speichern (https://www.delphipraxis.net/45290-double-und-tdatetime-delokalisiert-speichern.html)

weltaran 3. Mai 2005 16:19


Double und TDateTime 'delokalisiert' speichern
 
Hallo Leute!

Ich möchte in meinem (XML-)File Zeitstempel (TDateTime) und double-Werte speichern, und zwar ohne länderabhängige Formatierungen. Mit StrToDateTime und DateTimeToStr ist dies noch möglich, allerdings ohne Milisekunden, was mich stört. Bei FloatToStrF gibt es kein entsprechendes Pendant zum zurückholen und jedesmal DecimalSeparator zu überschreiben (in der GUI möchte ich latürnich lokalisierte Ausgaben machen) finde ich irgendwie unprofessionell.

Geht das auch irgendwie 'generischer' und sauberer?

Ciao

Bernhard Geyer 3. Mai 2005 16:24

Re: Double und TDateTime 'delokalisiert' speichern
 
ISO-Zeitformat ist 'ne Möglichkeit: YYYY-MM-DD hh:nn:ss

bernau 3. Mai 2005 16:25

Re: Double und TDateTime 'delokalisiert' speichern
 
Zitat:

Ich möchte in meinem (XML-)File Zeitstempel (TDateTime) und double-Werte speichern, und zwar ohne länderabhängige Formatierungen.
Gib doch mal ein Beispiel, wie der XML-Code aussehen soll?

Ferber 3. Mai 2005 16:28

Re: Double und TDateTime 'delokalisiert' speichern
 
Hi !

Delphi-Quellcode:

function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

{ DecodeDate decodes the integral (date) part of the given TDateTime value
  into its corresponding year, month, and day. If the given TDateTime value
  is less than or equal to zero, the year, month, and day return parameters
  are all set to zero. }

procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);

{ DateTimeToSystemTime converts a date and time from Delphi's TDateTime
  format into the Win32 API's TSystemTime format. }
Könnte das helfen :?:

shmia 3. Mai 2005 17:14

Re: Double und TDateTime 'delokalisiert' speichern
 
Kuck mal da:
http://www.hackcraft.net/web/datetime/#xsd
oder hier wäre die orginale, offizielle Quelle:
http://www.w3.org/TR/xmlschema-2/
demnach
Delphi-Quellcode:
function XMLDatetime(d:TDateTime):string;
begin
   result := FormatDateTime('yyyy"-"mm"-"dd"T"hh":"nn":"ss', d);
end;

weltaran 4. Mai 2005 13:06

Re: Double und TDateTime 'delokalisiert' speichern
 
OK, Und wie bekomm ich das wieder zurück in ein TDateTime? Das ist ja mein Problem: ich brauche so etwas wie 'sscanf' unter Delphi.

Ciao

bernau 4. Mai 2005 13:28

Re: Double und TDateTime 'delokalisiert' speichern
 
Zitat:

Zitat von weltaran
OK, Und wie bekomm ich das wieder zurück in ein TDateTime? Das ist ja mein Problem: ich brauche so etwas wie 'sscanf' unter Delphi.

Ungefähr so?

Delphi-Quellcode:
function XMLStrToDate(adatum:string):Tdatetime;
var
  year,month,day,h,m,s:word;
begin

 // yyyy"-"mm"-"dd"T"hh":"nn":"ss
  year:=strtoint(copy(adatum,1,4));
  month:=strtoint(copy(adatum,6,2));
  day:=strtoint(copy(adatum,9,2));
  result:=encodedate(year,month,day);
 
  h:=strtoint(copy(adatum,12,2));
  m:=strtoint(copy(adatum,15,2));
  s:=strtoint(copy(adatum,18,2));
  Result:=Result+encodeTime(h,m,s,0);
 
end;

weltaran 4. Mai 2005 13:42

Re: Double und TDateTime 'delokalisiert' speichern
 
Hi!

Ja, genau so! Vielen Dank. 'copy' war mir gänzlich unbekannt.

Ciao

weltaran 9. Mai 2005 16:21

Re: Double und TDateTime 'delokalisiert' speichern
 
Jetzt hab' ich immer noch das Problem mit den double-Werten. Diese müssen auch 'delokalisiert' gespeichert UND wieder eingelesen werden. Wie komm ich denn an den Nachkommaanteil der Zahl? Der ganzzahlige Anteil ist mit Round und Ceil/Floor zu bekommen.

Ciao

bernau 9. Mai 2005 16:42

Re: Double und TDateTime 'delokalisiert' speichern
 
Such mal nach "frac"


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.
Seite 1 von 2  1 2      

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