![]() |
Access violation mit free???
Hi,
hier das wichtigeste aus meinem unit;
Code:
wenn der zweite button gedrückt wird, bevor eine datei geladen wird passiert kein fehler.
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 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:
würde mich sehr um hilfe freuen MfG tn249 PS: kann man vorher irgendwie überprüfen, ob die instanz schon freigegeben wurde? |
Re: Access violation mit free???
wenn du einfach nur Free aufrufst wird das Object zwar frei gegeben aber der Objectzeiger nicht auf nil gesetzt. Wenn du jetzt erneug free aufrufst kracht es. Wenn du den Objeczeiger nach dem Free auf nil setzt würde das nicht passieren. Oder du rufst anstelle von "Free" gleich "FreeAndNil" auf
|
Re: Access violation mit free???
Zitat:
![]() Und warum eine globale Variable? |
Re: Access violation mit free???
Zitat:
Denny |
Re: Access violation mit free???
Zitat:
das freeandnil werde ich mal ausprobieren globale variable: wie hättest du es denn gelöst von den beiden procedures auf die datei zuzugreifen? vielen dank für eure hilfe MfG tn249 edit: :dp: |
Re: Access violation mit free???
anstelle von Globalen Variablen könntest du es einfach in den Private-Teil der Klasse schreiben (also direkt unter "private"
|
Re: Access violation mit free???
juhui es funktioniert
Code:
bloß FreeAndNil kennt er nicht und ich kann nicht nachschauen warum, weil meine DH an der stelle im Ar*** ist :wall:
myfile.Free;
myfile := nil; MfG tn249 |
Re: Access violation mit free???
Zitat:
|
Re: Access violation mit free???
FreeAndNil macht nix anderes als was du auch gemacht hast. Also erst Free aufrufen und dann das ganze auf "nil" setzen
|
Re: Access violation mit free???
Hallo,
FreeAndNil befindet sich übrigens in der Unit sysutils. Normalerweise solltest du die schon automatisch in den uses haben. Aber es macht sowieso nicht merh als zuerst Free und danach nil zuweisen. grüße, daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz