Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Thomas Schulte am 19.05.03 - 21:01:56
-
Ist zwar ein sehr spezieller Bug aber scheint noch keinem aufgefallen zu sein.
Wenn man versucht manuell mit wksp.openfiledialog ein File aus dem File System zu holen, das eine Länge von 0 hat, also z.B. ein leeres Protokolldateichen, dann kann man zwar das Dateichen auswählen, kriegt auch den Filename angezeigt, wenn man aber versucht mit z.B. Filelen(filename) anschließend darauf zuzugreifen is es
wech.
Physikalisch einfach nicht mehr auf der Platte, ratzeputz eliminiert.
Gilt zumindest für Win NT, Win2000 und Win98 mit jeweils LN5.010 und 6.01. Dann gehe ich mal davon aus, das es auch für alle anderen Kombinationen von Win und LN ebenfalls gilt.
Thomas
Thomas
-
Das kann ich nun spontan nicht nachvollziehen. Notes 6.0.1 CF1 unter Windos 2000 SP3.
Gib mal mehr Details.
-
bau dir einen Agent mit dem hier
Sub Initialize
Dim session As New notessession
Dim wksp As New notesuiworkspace
Dim pathname As String
Dim filename As String
Dim verlen As Long
Chdir "c:\test1"
pathName$ = "c:\test1\*.*"
fileName$ = Dir$(pathName$, 0)
Do While fileName$ <> ""
Print fileName$
verLen& = Filelen(Filename$)
Print verLen&
fileName$ = Dir$()
Loop
Stop
filename$ = setfilename(wksp)
verLen& = Filelen(Filename$)
Print verLen&
End Sub
und zusätzlich noch dem hier:
Function SetFileName(mywksp As notesuiworkspace) As String
%REM
This Function displays a dialog box to select a file in a directory on the server
%END REM
Dim szFilename As Variant
Dim szFilter As String
Dim szTitle As String
' set values
szFilename = Chr(0)
szTitle = "Verzeichnis für Import auswählen"
szFilter = "Alle Dokumente |*.*"
szfilename = mywksp.openfiledialog(False,sztitle,szfilter)
If szfilename(0) <> "" Then
SetFileName = szFileName(0)
End If
End Function
Dann baust du dir das Verzeihnis Test1 auf und kopierst ein paar Dateien da rein. Probiert hab ich's nur mit *.txt Dateien.
Anschließend erstellst du mit dem Editor eine leere txt Datei. Das Ding muss null Byte lang sein und speicherst sie in diesem Verzeichnis mit ab. Anschließend den Agent starten. Der erste Teil mit dem Loop läuft sauber durch, alle Dateien werden der Reihe nach angezeigt.
Wenn du aber beim zweiten Teil die Datei mit der Länge 0 auswählst, schmiert anschließend die Filelen Abfrage ab. Wenn du dann im Explorer nachsiehst ist exakt diese, ausgewählte Datei nicht mehr vorhanden.
Thomas
-
Nur eine kurze Frage zwischendurch:
Warum verwendest du in deinem Script in der Sub implizite und expizite Variablendeklaration gleichzeitig? ??? Das gukct mich ja reichlich seltsam an.
Gestern hatte ich es nur mit einen simplen Button in einer Maske probiert.
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim varFileNames As Variant
varFileNames = uiws.OpenFileDialog(True, "Datei auswählen")
Msgbox Filelen(varFileNames(0))
End Sub
Das machte keine Probleme. Ich werde mir dein Beispiel nochmal genauer ansehen.
-
Das mit der impliziten und expiziten Deklaration war einfach Kopiergehudel.
Aber auch damit:
Sub Initialize
Dim session As New notessession
Dim wksp As New notesuiworkspace
Dim db As notesdatabase
Dim questiondoc As notesdocument
Dim foundFilename As Variant
Dim ok As Variant
Dim verLen As Long
Dim pathName As String, fileName As String
Set db = session.Currentdatabase
Chdir "c:\test1"
pathName = "c:\test1\*.*"
fileName = Dir$(pathName$, 0)
Do While fileName <> ""
Print fileName
verLen& = Filelen(Filename)
Print verLen
fileName = Dir$()
Loop
foundfilename = wksp.openfiledialog(False,"test")
verLen = Filelen(foundFilename(0))
Print verLen
End Sub
Bekomme ich in einem Agent die gleiche Reaktion.
Ich wer heute mal eine nRechner mit Win2000 jungfräulich aufsetzen und da V6 draufspielen. Mal gucken ob das wirklich an Notes liegt.
Thomas
-
Man glaubt es echt nicht.
Der einzige Unterschied zwischen deiner und meiner Version ist der erste Schalter in der Funktion wksp.openfiledialog "Mehrfachauswahl"
Setzt man das Teil auf "True", dann bleiben auch Dateien mit der Länge Null erhalten. Setzt man das Ding auf "False" weil man auf jeden Fall nur eine Datei zurückbekommen will, dann werden Files mit der Länge 0 definitiv gelöscht.
Thomas
-
Aber hallo, damit hast du's wohl! :o
Sollte man ruhig an IBM weiterleiten. Allerdings muss ich zugeben, dass ich gar nicht weiß, was da der offizielle Kanal ist. Ich hatte mal zwei Bugs in der R6 names.nsf im LDD-Forum gepostet und weil da mehr oder weniger zufällig ein IBMer drüber gestolpert ist, gab's eine SPR-Nummer...