AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TFileStream EFOpenError

Ein Thema von fuchsle · begonnen am 7. Okt 2011 · letzter Beitrag vom 7. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2   
fuchsle

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

TFileStream EFOpenError

  Alt 7. Okt 2011, 09:42
Hallo,

mir ist aktuell folgendes Verhalten unklar.
Es wird die Existens der Datei geprüft (befindet sich auf einem Netzlaufwerk),
direkt danach wird die Datei mit einem Stream gelesen.

Wie kann es dabei zu der Fehlermeldung kommen, dass die Datei nicht gefunden werden konnte?

exception message : Datei "..." kann nicht geöffnet werden. Das System kann die angegebene Datei nicht finden.

Delphi-Quellcode:
// ...
      if FileExists(Filename) then
      begin
        Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone);
// ...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 09:53
Evtl. Wildcards im Dateinamen vorhanden?
Dann wird eine Datei gefunden die diesem Wildcard entspricht, aber geöffnet kann sie natürlich nicht werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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, 10:21
Evtl. Wildcards im Dateinamen vorhanden?
Dann wird eine Datei gefunden die diesem Wildcard entspricht, aber geöffnet kann sie natürlich nicht werden.
Entschuldigung, eine Information wäre sicher noch hilfreich.
Es handelt sich hier um eine Texdatei "*.log"
hier werden alle 60s die Werte neu rein geschrieben <-- Darauf habe ich keinen Einfluss und keine Einsicht
Demnach wird auch in meinem Programm die Datei alle 60s ausgelesen.
Die Fehlermeldung gibt es jedoch immer erst nach einigen Stunden im Testbetrieb.

Es gibt bei den Ausfällen keine erkennbaren Muster, wie eine bestimmte Uhrzeit oder Stundenzahl.
Taucht also eher sporatisch auf, bis es jedoch soweit ist, wurde die Datei sicher schon einige zehntausend mal ausgelesen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 10:24
Wenn sehr oft Datei geöffnet und geschrieben wird könnte es auch sein das ein Virenscanner querschießt und die Datei kurzzeitig im Beschlag hat. Evtl. mal Virenscanner für das Verzeichnis abschalten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#5

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.487 Beiträge
 
Delphi 7 Enterprise
 
#6

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
 
#7

AW: TFileStream EFOpenError

  Alt 7. Okt 2011, 10:57
Wenn sehr oft Datei geöffnet und geschrieben wird könnte es auch sein das ein Virenscanner querschießt und die Datei kurzzeitig im Beschlag hat. Evtl. mal Virenscanner für das Verzeichnis abschalten.
Ist auf einem Laufwerk im Firmennetz, habe keine Möglichkeit, Einfluss auf Scanner oder sonstiges zu nehmen.

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

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.
Wie die Datei beschrieben wird, habe ich aktuell nicht in Erfahrung bringen können.

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.
Dadurch könnte ich mir vorstellen, dass die Datei über löschen und schreiben aktualisiert wird.


Wie gesagt, ich habe und hatte keinen Einfluss auf die Exportfunktion, welche die Werte in die Datei überträgt.
  Mit Zitat antworten Zitat
fuchsle

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

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
 
#9

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.487 Beiträge
 
Delphi 7 Enterprise
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:56 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