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
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; end; sInt := ''; end; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var sec : Extended; sec := StringToSec('Vorbereitung: 2h 11s, Nachbearbeitung: 48m 23s'); 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.