Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
Delphi 11 Alexandria
|
AW: Stunden über 24 Addieren
5. Aug 2017, 07:08
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.
Sebastian Jänicke Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
Geändert von jaenicke ( 5. Aug 2017 um 07:10 Uhr)
|