Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.279 Beiträge
 
Delphi 12 Athens
 
#6

AW: Befehlszeile ausführen

  Alt 1. Dez 2010, 09:01
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Dez 2010 um 09:52 Uhr)
  Mit Zitat antworten Zitat