Autor Beitrag
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Fr 23.02.07 15:55 
Habe eine Datum als String das wie folgt aussieht:
20070112 114825
20070223 114825

yyyymmdd hhmmss

Möchte dieses Datum jetzt in eine TdateTime Variable formatieren. Wie mach ich das.

So bekomme ich immer eine Fehlermeldung, dass es sich um keine Datum-, Zeitangabe handelt:
Datum := StrToDateTime('20070112 114825');

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
katjah
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Win10 65bit
D7, D2005
BeitragVerfasst: Fr 23.02.07 20:33 
Hi,

wenn das immer im Format yyyymmdd hhmmss vorliegt, dann pflücke den String mit pos und copy auseinander. Die Teilstrings kannst Du dann mit z.B. StrToInt in integer umwandeln. Anschließend per EncodeDateTime in ein TDateTime verwandeln.

Gruß Katja
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Fr 23.02.07 21:08 
Das hatte ich mir fast gedacht, dass ich das so machen muss.

Dachte nur, dass es vielleicht eine elegantere Lösung gibt. Da mich das schon sehr viel Laufzeit kostet

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Hobby-Programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 238
Erhaltene Danke: 4

Win XP Pro, Vista Ultimate Trial :o)
D6 Pro, D7 Pro, Turbo, XE SE
BeitragVerfasst: Sa 24.02.07 04:13 
Moin ...,
ich hatte mal ne Function dazu geschrieben. Sie wandelt ein beliebiges Datums und Zeitformat - vielleicht hilfts Dir ja
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function TForm1.MyDateTime(S, MyMask, StaticMask: String): String;
var i, ii: Word;
begin
  result:= '';
  for i:= 1 to Length(MyMask) do
    for ii:= 1 to Length(StaticMask) do
      if UpperCase(MyMask[i]) = UpperCase(StaticMask[ii]) then begin
        result:= result+ S[ii]; // Wert übernehmen
        StaticMask:= StringReplace(StaticMask, StaticMask[ii], '*', [rfIgnoreCase]);
       end else if (MyMask[i] = '.') or (MyMask[i] = ':') then begin
        result:= result+ MyMask[i]; // Trenner übernehmen
        break; // innere Schleifen vorzeitig beenden
      end;
end;
Aufzurufen bei Deinen Daten bspw.
ausblenden Delphi-Quelltext
1:
MyDateTime(Text, 'DD.MM.YYYY HH:NN:SS', 'YYYYMMDD HHNNSS');					
Bestimmt noch verbesserungswürdig.

[edit] mit StrToDateTime konvertieren und natürlich Ressourcenschutzblöcke nicht vergessen, man weiss ja nie :mahn:
[/edit]

LG Mario