Einzelnen Beitrag anzeigen

Benutzerbild von tn249
tn249

Registriert seit: 18. Jan 2004
Ort: München
164 Beiträge
 
Delphi 2005 Personal
 
#1

Access violation mit free???

  Alt 13. Dez 2004, 21:33
Hi,

hier das wichtigeste aus meinem unit;
Code:
var
  mainForm: TmainForm;
  myfile: TFileStream;

implementation      

{$R *.dfm}

procedure TmainForm.Button1Click(Sender: TObject);
begin
  if (OpenDialog1.Execute) then
    begin
      try
        myfile := TFileStream.Create(OpenDialog1.FileName, fmOpenRead and fmShareDenyWrite);
      except
        myfile.Free;
      end;
    end;
end;

procedure TmainForm.Button2Click(Sender: TObject);
begin
  myfile.Free;
end;
wenn der zweite button gedrückt wird, bevor eine datei geladen wird passiert kein fehler.

wenn ich eine datei lade, sie dann schließe und hinterher nochmal den 2. button drücke bekomme ich eine access violation

ich frage mich warum, da ich in der hilfe folgendes gefunden habe;
Zitat:
Destroys an object and frees its associated memory, if necessary.

procedure Free;

Description

Use Free to destroy an object. Free automatically calls the destructor if the object reference is not nil. Any object instantiated at runtime that does not have an owner should be destroyed by a call to Free so that it can be properly disposed of and its memory released. Unlike Destroy, Free is successful even if the object is nil; so if the object was never initialized, Free won’t result in an error. [...]
kann mir das jemand erklären
würde mich sehr um hilfe freuen

MfG
tn249

PS: kann man vorher irgendwie überprüfen, ob die instanz schon freigegeben wurde?
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat