Bei so tiefer Verschachtelung bietet sich übrigens wieder die Methode mit
try
..
finally
Block an, über die wir schonmal in einem anderen Thread geredet hatten. Also Statt:
Delphi-Quellcode:
if (X) then
begin
if (Y) then
begin
if (Z) then
begin
..
Free(Z);
end;
Free(Y);
end;
Free(X);
end;
einfach
Delphi-Quellcode:
try
if (not X) then Exit;
if (not Y) then Exit;
if (not Z) then Exit;
..
finally
if (X) then Free(X);
if (Y) then Free(Y);
if (Z) then Free(Z);
end;
Vorher natürlich Luckies Tipp befolgen und möglichst viel in logisch sinnvolle Funktionen/Methoden auslagern.