Autor Beitrag
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 30.06.06 00:00 
Zeitwerte aus String extrahieren und berechnen


Die Funktion extrahiert alle Zeitangaben die mit einem nachfolgenden Zeit-Kennzeichen(h,m,s,z) versehen sind, aus einem String.
Die extrahierten Werte werden in die Einheit Sekunden umgerechnet und summiert.
z.B.
'Zeitmessung ergab: 4h,48m,23s und 145z' = 17303,145
  • Die Funktion
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function StringToSec(sTime: String): extended;
var sInt : String;
    z : Integer;
begin
  Result := 0;
  for z := 1 to Length(sTime) do
    if sTime[z] in ['0'..'9'then
     sInt := sInt+sTime[z]
     else
       begin
       if sInt <> '' then
         case sTime[z] of
           'h' : Result := StrToInt(sInt)*3600;
           'm' : Result := Result+StrToInt(sInt)*60;
           's' : Result := Result+StrToInt(sInt);
           'z' : Result := Result+StrToInt(sInt)/1000;//Millisekunden
         end;
       sInt := '';
       end;
end;

  • Aufrufbeispiele
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var sec : Extended;
//...
  sec := StringToSec('Vorbereitung: 2h 11s, Nachbearbeitung: 48m 23s');
//...oder auch einen Memoinhalt
  sec := StringToSec(Memo.Text);
  showmessage('Summe: '+FloatToStr(sec)+' Sekunden.');

  • ...was nicht funktioniert
'Länge 67mm Zeit 2m 26s' = 4166
denn '67m' wird als Minutenangabe gewertet.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )