Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#23

AW: Bitte um Hilfe für Webservice/Gateway/PortListener

  Alt 21. Sep 2012, 12:20
[OT] Kurzes Thread-Hijacking, da es hier aufkam:

Wenn es freigegeben und auf nil gesetzt oder mit nil initialisiert und nie instanziert wurde, richtig.
Nochmal nachgehakt. Wenn ich es nie instanziere und auch vorher nicht mit nil initialisiere, dann würde es kanllen?

Delphi-Quellcode:
var t:TStringlist;
begin
try
  Irgendwas, das eine Exception auslöst;
  t:=TStringlist.Create;
  Irgendwas anderees mit t;
finally
  t.Free;
end;
end;
Hier t nie erzeugt, da es schon vorher knallt, wird aber im finally freigegeben?

Delphi-Quellcode:
var t:TStringlist;
begin
t:=TStringlist.Create;
try
  Irgendwas, das eine Exception auslöst;
  Irgendwas anderees mit t;
finally
  t.Free;
end;
end;
Hier ist t vor der exception erzeugt worden und kann freigegeben werden?

[/OT]
Genau so ... denn lokale Variablen werden nicht automatisch initialisiert wie globale oder Klassen-Variablen

Allerdings, wenn man sich das so ansieht, scheinst du hier doch eine globale Variable definiert zu haben
Delphi-Quellcode:
var
  globalSL : TStrings;

procedure Foo;
var
  localSL : TStrings;
begin
  // lokale Variablen sollten initialisiert werden
  // localSL := nil;
  try
    ...
    // mögliche Exception
    ...
    globalSL := TStringList.Create;
    localSL := TStringList.Create;
    ...
  finally
    globalSL.Free;
    localSL.Free; // mögliche Exception!!!
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (21. Sep 2012 um 12:25 Uhr)
  Mit Zitat antworten Zitat