hallo zusammen,
folgendes problem.
ich öffne eine datei mit folgendem befehl
Open sFile For Input As fileNum
on error springt das programm zu einer fehlerbehandlung, das programm wartet 1sek und versucht dann die datei wieder mit
Open sFile For Input As fileNum
zu öffnen.
es erscheint eine fehlermeldung "unable to open file"
eigentlich sollte das programm aber 30 mal (30sek) versuchen die Datei zu öffnen und danach eine fehlermeldung ausspucken.
kann mit jemand sagen warum beim zweiten versuch die datei zu öffnen eine fehlermeldung kommt?
danke...
ok:
Fehlerbehandlung:
fehlerbehandlung:
Do
zahl = zahl+1
Sleep (1)
If zahl = 30 Then
Messagebox "Datei nicht gefunden / Verarbeitung nicht möglich", vbCritical, "BLA"
Exit Sub
End If
Open sFile For Input As fileNum
Loop Until zahl = 30
Resume Next
es funktionier aber auch nicht, wenn ich in der fehlerbehandlung zu einem anderen label springe
und in diesem dann den Open sFile befehl mache.
vor dem label steht dann on error goto fehlerbehandlung.
beim ersten durchlauf funktionier das ja dann auch aber beim 2. nicht mehr.
die fehlerbehandlung sieht dann so aus:
fehlerbehandlung:
zahl = zahl+1
Sleep (1)
If zahl = 30 Then
Messagebox "Datei nicht gefunden / Verarbeitung nicht möglich", 48, "Bla"
Exit Sub
End If
Goto openfile
Ich persönlich würde eine Funktion schreiben, die prüft, ob auf eine Datei zugegriffen werden kann oder nicht. Die Finktion gibt Wahr bzw. Falsch zurück.
Hier ein Beispiel aus einer VB Anwendung, evtl kannst du es ja einfach nach LS übersetzen...
(nicht selbest verfasst sondern in google geklaut)
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Function IsFileAlreadyOpen(fileName As String) As Boolean
Dim hFile As Long
Dim lastErr As Long
' Initialize file handle and error variable.
hFile = -1
lastErr = 0
' Open for for read and exclusive sharing.
hFile = lopen(fileName, &H10)
' If we couldn't open the file, get the last error.
If hFile = -1 Then
lastErr = Err.LastDllError
' Make sure we close the file on success.
Else
lclose (hFile)
End If
' Check for sharing violation error.
If (hFile = -1) And (lastErr = 32) Then
IsFileAlreadyOpen = True
Else
IsFileAlreadyOpen = False
End If
End Function
bevor du also etwas mit der Datei machst, prüfst du mit der Funktion, ob es möglich ist.