![]() |
Dateistatus abfragen???
Sorry den post gibts jetzt doppelt. hab den ausversehen auch in "klatsch und trasch" gestellt. newbies fehler ;)
so jetzt aber : ich(oder besser eine projekt gruppe) habe ein programm geschrieben welches eine textdatei einliest,konvertiert und in eine sql datenbank schreibt. die textdatei wird nach dem einlesen gelöscht. eine neue textdatei wird von einer sps geschickt. jetzt gibt es nach ein paar hundertmal einlesen immer wieder mal einen I/O error. meine theorie ist das, dass schreiben und einlesen der datei gleichzeitig passiert. mit FileExist wird schon abgefragt ob die datei vorhanden ist. trotzdem kommt die fehlermeldung. das einlesen der datei geschied über : FileMode = 0, AssisgnFile, Reset und Blockread. Gibt es irgendeine Möglichkeit den Status einer Datei abzufragen?? Oder hat jemand eine erklärung wie man sonst den I/O error wegbekommen kann? hab da was von einer compilerdirektive mit {$-} gelesen. aber die unterdrückt doch dann nur die delphifehlermeldung und nicht die windowsfehlermelder oder? |
Re: Dateistatus abfragen???
macht dochn timer, dasser, bevor er einliest, immer ein halbes sekündchen wartet
oder nur auf buttonklick einlesen |
Re: Dateistatus abfragen???
Also mit dem Button wird wohl nicht funktioniren weil ich nicht 500mal am Tag zum Server laufen kann und nen Button drücken. Wird schwer das meinen Chef zu erklären :shock:
Mit dem Timer hab ich auch schon überlegt. Nur finde ich es komisch das die Abfrage FileExist postiv ist wenn die Datei noch nicht komplett fertig geschrieben ist. Habe was gelesen, das man mit FileCreate abfragen kann ob eine Datei exklusiv in Benutztung ist. Weiß da jemand was genaueres weil ich mit der Delphi-Hilfe nicht so ganz klarkomme bei diesem Befehl |
Re: Dateistatus abfragen???
Also mit dem Button wird wohl nicht funktioniren weil ich nicht 500mal am Tag zum Server laufen kann und nen Button drücken. Wird schwer das meinen Chef zu erklären :shock:
Mit dem Timer hab ich auch schon überlegt. Nur finde ich es komisch das die Abfrage FileExist postiv ist wenn die Datei noch nicht komplett fertig geschrieben ist. Habe was gelesen, das man mit FileCreate abfragen kann ob eine Datei exklusiv in Benutztung ist. Weiß da jemand was genaueres weil ich mit der Delphi-Hilfe nicht so ganz klarkomme bei diesem Befehl |
Re: Dateistatus abfragen???
HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDistribution, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to copy ); dwShareMode Set of bit flags that specifies how the object can be shared. If dwShareMode is 0, the object cannot be shared. Subsequent open operations on the object will fail, until the handle is closed. To share the object, use a combination of one or more of the following values: Value Meaning FILE_SHARE_DELETE Windows NT only: Subsequent open operations on the object will succeed only if delete access is requested. FILE_SHARE_READ Subsequent open operations on the object will succeed only if read access is requested. FILE_SHARE_WRITE Subsequent open operations on the object will succeed only if write access is requested. ############################ setzt den share-mode auf "0", das sollte in der tat helfen PS: "Habe was gelesen, das man mit FileCreate abfragen kann ob eine Datei exklusiv in Benutztung ist. Weiß da jemand was genaueres weil ich mit der Delphi-Hilfe nicht so ganz klarkomme bei diesem Befehl" nicht nachschauen, sondern bestimmen PS2: der obige Code ist aus dem WindowsSDK, nicht der Delphi-Hilfe direkt, aber das SDK ist normal bei der Hilfe dabei, bei Delphi 7 sogar im Menü integriert PS3: Hilft natürlich nur, wenns wirklich daran liegt |
Re: Dateistatus abfragen???
Delphi-Quellcode:
function FileInUse(FileName: string): Boolean;
var hFileRes: HFILE; begin Result := False; if not FileExists(FileName) then Exit; hFileRes := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Result := (hFileRes = INVALID_HANDLE_VALUE); if not Result then CloseHandle(hFileRes); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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