AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFileStream schließen

Ein Thema von cheatzs · begonnen am 20. Aug 2004 · letzter Beitrag vom 20. Aug 2004
Antwort Antwort
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#1

TFileStream schließen

  Alt 20. Aug 2004, 17:56
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:
if FileStream <> NIL then
  FileStream.Free;
Leider bringt das immer ne Exception.
Auch das FileStream.Free allein, ohne die If-Abfrage, obwohl in der Online-Hilfe für TObject.Free steht
Zitat:
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.
, erzeugt eine Zugriffs-Fehler.

Also gibts da ne Möglichkeit??? Oder hab ich sogar die richtige Möglichkeit und der Fehler liegt womöglich wo anders?

Danke

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TFileStream schließen

  Alt 20. Aug 2004, 17:59
das tfilestream muss zuerst erzeugt worden sein bevor dus wieder schließen kannst aber dann gehts normal mit "Free".
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#3

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:03
das ist ja das Problem , ich kann vorher nicht wissen, ob das FileStream erstellt wurde und noch nicht wieder geschlossen
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:07
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.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Benutzerbild von Fossibaer58809
Fossibaer58809

Registriert seit: 20. Aug 2004
Ort: Lüdenscheid
50 Beiträge
 
Delphi 2007 Professional
 
#5

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:08
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);
Michael Küper
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:08
beim programmstart deine variable mit nil initialisieren, und immer beim killen mit FreeAndNil() arbeiten. dann gibt es keine exc.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#7

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:19
THX, jetzt geht es!

Danke für schnelle Antworten!

Bye
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Benutzerbild von edosoft
edosoft

Registriert seit: 27. Okt 2003
Ort: Wehingen
258 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: TFileStream schließen

  Alt 20. Aug 2004, 18:46
vielleicht gehts ja auch mit
Delphi-Quellcode:
try
  filestream.Free;
  except
  end;
Dominik Weber
www.edo-soft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz