Wenn schon ein tstringlist.create abstürzt, wird es sowieso bei nächster Gelegenheit knallen. Derartige Fehler abfangen und weitermachen, als wäre nichts gewesen, bringt doch gar nichts.
Nicht?
Es kann doch zufällig danach noch was freigegeben werden und dann paßt es wieder.
Delphi-Quellcode:
errors := nil;
output := GetMem(1000000000); // grade noch genug
try
errors := GetMem(100); // das war jetzt zuviel
...
finally
FreeMem(errors); // hier könnte es ohne :=nil nochmals knallen
FreeMem(output);
end;
Jetzt könnte es ab dem nächten Except (von einem Try-Except) weitergehn, da wieder genug Speicher frei ist.
Ohne das :=nil könnte es aber passieren, daß es beim
FreeMem(errors)
nochmal knallt, dabei die ursprüngliche Fehlerursache/-adresse verfälscht und
FreeMem(output)
ganicht mehr ausgeführt wird.
du siehst ... ohne das :=nil wird es nur schlimmer und mit kann es besser werden
[add]
Zitat:
Delphi-Quellcode:
output := TStringList.Create;
errors := TStringList.Create;
try
...
finally
output.free;
errors.free;
end;
bitte nicht ... wenn es hier bei errors knallt, dann wird output nicht freigegeben.