Einzelnen Beitrag anzeigen

SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#7

Re: Zugriffsverletzung bei free?

  Alt 4. Mär 2007, 23:15
Zitat von Hyperspacer:
... Obowhl ich den fehler schon komisch finde
Mit diesem Code hier:
Delphi-Quellcode:
with TEdit.Create(form1) do begin
  ...
end;
legst Du zwar ein TEdit an und initialisierst du es, aber direkt nach dem End wird es wieder freigegeben, weil du es keiner Variablen zuweist. Und damit arbeiten all deine Routinen, die du zuweist, im luftleeren Raum, und dein Sender.Free gibt bereits freien Speicher nochmal frei.

Wenn Du schon Controls on-the-fly erzeugen willst, musst Du sie in einer Variable speichern, und zwar keiner lokalen innerhalb der Prozedur, sondern innerhalb der aktuellen Klasse/des aktuellen Forms:

Delphi-Quellcode:
  tmp_edit := TEdit.Create(form1);
  with tmp_edit do begin
    tmp_edit.Parent := form1;
  end;
und dann spätestens im FormClose-Event:
  FreeAndNil(tmp_edit);
  Mit Zitat antworten Zitat