Zitat:
Delphi-Quellcode:
output := TStringList.Create;
try
errors := TStringList.Create; // 1
...
finally
output.free;
errors.free; // 2
end;
Wenn es bei (1) zu einer
Exception kommt, dann knallt es bei (2) bestimmt nochmal und verfälscht so die Fehlerursache,
da die Variable in diesem Fall nicht initialisiert wurde (was eigentlich Delphi auch bemängeln sollte).
z.B. statt einem OutOfMemory bekommt man dann vermutlich ein "Zugriffsverletzung bei Adresse soundso" zu sehn.
also müßte es eigentlich so aussehn
Delphi-Quellcode:
output := TStringList.Create;
try
errors := TStringList.Create;
try
...
finally
errors.free;
end;
finally
output.free;
end;
oder wenigstens so
Delphi-Quellcode:
errors := nil;
output := TStringList.Create;
try
errors := TStringList.Create;
...
finally
output.free;
errors.free;
end;
oder so
Delphi-Quellcode:
output := nil;
errors := nil;
try
output := TStringList.Create;
errors := TStringList.Create;
...
finally
output.free;
errors.free;
end;