Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie

  Alt 1. Aug 2006, 18:19
Hallo,

er wollte genau das Gegenteil String -> DateTime.
Übrigens kann DecodeTime auch nur Stunden bis 24.

Folgende Funktion hatte ich mir mal geschrieben.
Aber bitte nicht meckern, is elend lange her

Delphi-Quellcode:
function StrToTime_hhhmm(theTimeStr: String; var theDateTime: TDateTime): Boolean;
var
  Counter : Integer;
  Hours : Integer;
  ResultTime: TDateTime;
  bMinus : Boolean;
begin
  Result := False;
  theDateTime := 0.0;
  bMinus := False;

  try
    ResultTime:= 0.0;

    if Pos('-', theTimeStr)=1 then
    begin
      Delete(theTimeStr,1,1);
      bMinus:= True;
    end;

    {-- Die Stunden extrahieren--}
    {erstes Auftreten von : suchen}
    Counter:= Pos(':', theTimeStr)-1;

   {Stunden extrahieren }
    if Counter=-1 then
    begin
      Hours := StrToInt(theTimeStr);
      theTimeStr:= '';
    end
    else
    begin
      Hours := StrToInt(Copy(theTimeStr, 1, Counter));
      Delete(theTimeStr, 1, Counter); {Löscht hhh}
    end;

    {Stunden zu ResultTime addieren }
    while Hours >= 24 do
    begin
      ResultTime := ResultTime+1;
      Hours := Hours-24;
    end;

    {Stunden <24 zurückschreiben}
    if theTimeStr='then
    begin
      theTimeStr := IntToStr(Hours)+':00';
    end
    else
    begin
      theTimeStr := IntToStr(Hours)+theTimeStr;
    end;

    {RestString in DateTime umformen}
    ResultTime := ResultTime + StrToTime(theTimeStr);

    theDateTime:= ResultTime;

    if bMinus then theDateTime:= -theDateTime;

    Result:= True;
  except
    on Exception do;
  end;
end; { StrToTime_hhhmm }

Heiko

[edit=sakura] [delphi]-Tags Mfg, sakura[/edit]
Heiko
  Mit Zitat antworten Zitat