![]() |
TFileStream schließen
Hi Leutz,
hab ein TFileStream gemacht, funzt auch alles. Leider kann ich nicht mit try ... finally arbeiten, zumindest nicht direkt für den FileStream, weil ich den über mehrere Prozedur-Aufrufe offen halten muss. Also brauch ich ne Möglichkeit beim Schließen vorher zu prüfen ob dem FileStream eine Datei zugeordnet ist... (es könnte ja sein, während der Prozedur ist eine Exception aufgetreten und der FileStream wird nicht ordnungsgemäß geschlossen) Ich dächte immer das ginge mit
Delphi-Quellcode:
Leider bringt das immer ne Exception.
if FileStream <> NIL then
FileStream.Free; Auch das FileStream.Free allein, ohne die If-Abfrage, obwohl in der Online-Hilfe für TObject.Free steht Zitat:
Also gibts da ne Möglichkeit??? Oder hab ich sogar die richtige Möglichkeit und der Fehler liegt womöglich wo anders? Danke Bye |
Re: TFileStream schließen
das tfilestream muss zuerst erzeugt worden sein bevor dus wieder schließen kannst aber dann gehts normal mit "Free".
|
Re: TFileStream schließen
das ist ja das Problem :wink:, ich kann vorher nicht wissen, ob das FileStream erstellt wurde und noch nicht wieder geschlossen
|
Re: TFileStream schließen
Hi,
das Prüfen von FileStream auf nil kannst du dir vor dem Free sparen - dass macht Free selbst. Allerdings ist das auch die einzige Möglichkeit, über die Free feststellen kann, ob FileStream wirklich auf einen FileStream zeigt. Ist deine Variable also nicht nil, versucht Free das Objekt freizugeben. Gibt es das Objekt aber gar nicht, kommt es zu einer Exception. Du solltest also die Variable mit nil initialisieren oder auf nil setzen, wenn beim Create ein Fehler auftritt. Außerdem kann es nicht schaden, die mögliche Exception beim Aufruf von Free abzufangen. |
Re: TFileStream schließen
Ich denke mal, der Fehler tritt immer auf, wenn der Filestream schon mal geöffnet und dann wieder geschlossen wurde.
Ich würde folgendes versuchen: IF Assigned(FFileStream) then FreeAndNil(FFileStream); |
Re: TFileStream schließen
beim programmstart deine variable mit nil initialisieren, und immer beim killen mit FreeAndNil() arbeiten. dann gibt es keine exc.
|
Re: TFileStream schließen
THX, jetzt geht es!
Danke für schnelle Antworten! Bye |
Re: TFileStream schließen
vielleicht gehts ja auch mit
Delphi-Quellcode:
try
filestream.Free; except end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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