Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.350 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Stunden über 24 Addieren

  Alt 5. Aug 2017, 06: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 06:10 Uhr)
  Mit Zitat antworten Zitat