AGB  ·  Datenschutz  ·  Impressum  







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

TFileStream EFOpenError

Ein Thema von fuchsle · begonnen am 7. Okt 2011 · letzter Beitrag vom 7. Okt 2011
Antwort Antwort
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#1

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 10:31
Auf eine Datei namens "*.log" wirst Du nur mit direkter Kommunikation auf NTAPI-Ebene zugreifen können (genauso wie halt lpt1, etc.).

Deswegen extra die Nachfrage von Bernhard Geyer, und ich vermute mal, Du meinst nicht *.log, sondern irgendwas.log mit anderem irgendwas.

Wird die Datei neu erstellt, wenn sie geschrieben wird, oder wird wirklich nur angehängt? Sonst gäbe es halt einen winzigen Augenblick, in dem sie tatsächlich nicht existiert.

Außerdem gibt es einen Bug in fmShareDenyNone, das denied nämlich das Löschen. Das FreePascal-Team habe ich dazu sofort zum fixen überredet bekommen, im QC steht es schon 4 Jahre. Wobei das nur umgekehrt dafür verantworlich sein könnte, daß keine neuen Werte geschrieben werden können, während Du ausliest, wenn diese per Löschen & Überschreiben geschrieben werden. Also potentielle Fehlerquelle, aber nicht für den beschriebenen Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 10:34
Greifen mehrere Instanzen auf dieselbe Datei zu? Findet vielleicht ein Umbenennen ab einer bestimmten Größe statt und Du rennst da genau zu dem Zeitpunkt rein?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#3

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 11:00
Greifen mehrere Instanzen auf dieselbe Datei zu? Findet vielleicht ein Umbenennen ab einer bestimmten Größe statt und Du rennst da genau zu dem Zeitpunkt rein?
Mehrere lesende instanzen greifen auf die Datei zu.
Da es sich hier nicht wirklich um einen Log, sonder um einen Export von 4 Werten aus einer DB handelt, stehen nie mehr als 4 Werte in der Datei.
Umbenennen findet nicht statt und Größe der Datei ändert sich nicht signifikant.
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#4

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 11:12
Wird die Datei neu erstellt, wenn sie geschrieben wird, oder wird wirklich nur angehängt? Sonst gäbe es halt einen winzigen Augenblick, in dem sie tatsächlich nicht existiert.
mir wurde folgendes zugetragen:
Zitat:
Die Datei wird neu geschrieben.
Als xx.log Datei.
Die bestehende Datei wird dann umbenannt in xx.L01 usw.
Date created: 31.08.2011 13:49
Date modified: 07.10.2011 11:13

Demnach wird die Datei doch nicht gelöscht?
Das "Date created" müsste doch mit dem "Date modified" übereinstimmen?

Geändert von fuchsle ( 7. Okt 2011 um 11:17 Uhr) Grund: Korrektur der Sachverhalte
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 11:16
Wenn ich jedoch direkt zuvor die Existens der Datei prüfe und es dennoch zu dem Fehler kommt, würde das für mich nun heißen, dass die Datei wärend ich Sie auslese gelöscht wird.
Das sollte man dann anders Programmieren, z.b. Zugriffsversuche in einer Schleife mit Exception.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#6

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 12:03
Zitat:
Das System kann die angegebene Datei nicht finden.
Dieser Teil der Fehlermeldung kommt vom System (GetLastError)
Also können wir schonmal (mit sehr großer Wahrscheinlichkeit) ein Fehler bei den Zugriffsrechten ausschließen.
Ordentliche Virenscanner so


PS: Du prüfst zwar die Existenz der Datei, aber gleichzeitig sagst du, daß ein anderes Programm an der Datei rumwerkelt.

Eventuell ist die Datei zwischendurch wirklich mal kurz weg, wärend das andere Programm diese neu erstellt?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#7

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 11:17
Oder genau zwischen dem FileExists und dem Anlegen des FileStreams. Du könntest also Letzteres in einen "äußeren" try-except-Block packen. Ist die Datei zu diesem Zeitpunkt nicht da, wird eben eine Exception "File not found" geworfen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 10:08 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 by Thomas Breitkreuz