Domino 9 und frühere Versionen > Entwicklung
Datei öffnen mit "Open sFile For Input As fileNum"
mibo11:
Mal ein ganz anderer Ansatz. Es ist ja offensichtlich, dass du auf diese Datei wartest. Wahrscheinlich Datenversorgung über TXT Datei oder ähnliches. Versuch doch einfach 30 Sekunden einen Dir auszuführen und wenn Datei vorhanden ist, unterbrichst du deine Do While Schleife, die maximal 30 Sekunden läuft und öffnest die Datei dann mit deinem Open Befehl. Die Fehlerbehandlung kann in diesem Fall dann nicht den Grund haben, dass die Datei nicht vorhanden ist.
Gruß Sascha
animate:
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)
--- Code: ---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
--- Ende Code ---
bevor du also etwas mit der Datei machst, prüfst du mit der Funktion, ob es möglich ist.
froehlich2000:
danke erstmal...mit dir("dateiname") funktioniert es
koehlerbv:
Mir ist immer noch nicht ganz klar, was Du da treibst ... Wozu dieser 30malige Versuch, eine Datei zu öffnen ?
Abgesehen davon: Du belegst mit Deinem ersten Öffnen (auch, wenn das nicht klappt), sowohl Dein sFile, ebenso wie Du den FileHandle filenum dabei verballerst. Ab dem zweiten Versuch kann das dann nicht mehr klappen. Du musst diese instantiierten Objekte vorher vernihten, bevor Du es erneut versuchst.
Bernhard
flaite:
Er hat imho mit dem dir(filename) Funktion die korrekte Lösung geliefert.
Das passiert, wenn man etwas z.B. mit einem Host austauscht und es direkt zurückhaben will.
Wir stellen sowas übrigens mit Erfolg auf Websphere MQ um. Ist einfach sauberer. Websphere MQ ist ein Messaging System (Stichwort: quasi völlig entkoppelter und sicherer Austausch von Informationen zwischen heterogenen Systemen).
Es gibt mittlerweile auch andere brauchbare Messaging Systeme. Allerdings in Java.
http://www.manageability.org/blog/stuff/open-source-jms-java/view
Interessantes Thema, aber kriegt man nicht an einem Nachmittag in den Griff.
Wenn das aber erstmal läuft, ist es eine gute Sache.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln