Recht schnell sollte diese Variante sein:
Delphi-Quellcode:
uses
Math;
function GetHourSum(const AValues: TStrings): Double;
var
CurrentValue: string;
begin
Result := 0;
for CurrentValue in AValues do
if Length(CurrentValue) >= 5 then
begin
Result := Result + (Ord(CurrentValue[1]) - 48) * 10;
Result := Result + Ord(CurrentValue[2]) - 48;
Result := Result + (Ord(CurrentValue[4]) - 48) / 6;
Result := Result + (Ord(CurrentValue[5]) - 48) / 60;
end;
end;
function HoursToStr(const AValue: Double): string;
begin
Result := IntToStr(Floor(AValue)) + ':' + IntToStr(Round(Frac(AValue) * 60));
end;
// Als Beispiel hatte ich hier die Werte in Memo1 stehen:
ShowMessage(HoursToStr(GetHourSum(Memo1.Lines)));
Dabei werden einfach die Werte der einzelnen Ziffern addiert ohne diese mit StrToInt usw. umzuwandeln. Dadurch sind das nur ein paar Maschinencodeaufrufe jeweils.