Nee. Ich benutze an sehr vielen Stellen im Programm immer wieder denselben Schleifenkopf und vor diesem Schleifenkopf noch eine weitere if-Abfrage.
Etwa so
Delphi-Quellcode:
{ 1 } if Liste.Count > 0 then
begin
{ 2 } for i := 0 to Liste.Count - 1 do
begin
DieEigentlicheArbeit;
end;
end;
Durch das Auslagern des Schleifenkopfes und DieEigentlicheArbeit (das kann alles sein) als Prozedurparameter habe ich { 1 } und { 2 } jetzt nur noch an einer einzigen Stelle.
Delphi-Quellcode:
procedure TForm1.ForLoopList(Func: TFunc<Integer, Boolean>);
var
i: Integer;
begin
if Liste.Count = 0 then
Exit;
for i := 0 to Liste.Count - 1 do
begin
if Func(i) then
Break;
end;
end;
ForLoopList(
function(i: Integer): Boolean
begin
Result := DieEigentlicheArbeit;
end);
Was ich jedoch noch nicht so richtig verstehe, ist die Definition von TFunc. Warum <Integer, Boolean>?