Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 20:42
Wenn ich das richtig sehe, dann müsste es so auch DRY werden.
Delphi-Quellcode:
function ProcessAction : Boolean;
var
  varCurrActClass : TLastActionClass;
  i : integer;
begin
  try
    for i := 0 to FLastActionList.Count -1 do
    begin
      varCurrActClass := FLastActionList.Items[i];

      if
        {Bedingung1} (...)
        {oder} or
        {Bedingung2} (...)
      then
        begin
          FLastActionList.Remove(varCurrActClass);
          FLastActionList.TrimExcess;
          exit(true);
        end;
      
    end;
    exit(false);
  finally
    {Wenn es noch etwas zu tun gibt, wird quasi immer ausgeführt}
  end;
end;

begin
  while ProcessAction( ) do;
end;
Aber wenn ich es mir so richtig anschaue, dann müsste sich das komplett so abtüten lassen:
Delphi-Quellcode:
procedure ProcessAction;
var
  varCurrActClass : TLastActionClass;
  i : integer;
begin
    for i := FLastActionList.Count -1 downto 0 do
    begin
      varCurrActClass := FLastActionList.Items[i];

      if
        {Bedingung1} (...)
        {oder} or
        {Bedingung2} (...)
      then
        begin
          FLastActionList.Delete( i );
        end;
      
    end;
  FLastActionList.TrimExcess;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat