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?