Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.791 Beiträge
 
Delphi 12 Athens
 
#3

AW: Stunden über 24 Addieren

  Alt 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
AppCentral

Geändert von jaenicke ( 5. Aug 2017 um 07:10 Uhr)
  Mit Zitat antworten Zitat