Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Glombi am 21.10.04 - 14:45:55

Titel: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Glombi am 21.10.04 - 14:45:55
Hallo Notes-Gemeinde,
folgendes Problem taucht hier auf:

Auf allen PCs (lokal und Citrix) liefert
Dir$("x:\",8 ) <> ""
zurück, d.h. das Laufwerk X existiert.

Nur auf einem PC liefert
Dir$("x:\",8 ) = ""
zurück.
Aber mit
Dir$("x:",8 ) <> ""
ist es wieder korrekt. Warum hat denn der eine PC mit dem Backslash ein Problem  ???

Hat jemand das auch mal gehabt?

@eknori:
Der Fehler tritt hier auf (CLASSAttachment):
Private Function IsDriveAvailable(drivNam$) As Variant
'// Does Drive exists
'// Called by : Function IsPathAvailable, Function DetachAll
'// Calls : none
      On Error Resume Next
      IsDriveAvailable = (Dir$(drivNam , 8 ) <> "")
   End Function


drivNam ist hier = "x:\"

Andreas

Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: m3 am 21.10.04 - 14:57:56
Also die Online-Hilfe sagt:
Zitat
On any platform except Windows (16, 9x, NT, 2000) if you ask for just the volume label you will get an empty string.

Ich wuerd daher eher ein ChDrive() machen und dann mit CurDrive() checken, obs geklappt hat, um zu testen, ob es das Drive gibt.

Oder mit zumindest mit Dir$("x:\*.*",8 ).

Das sind aber nur meine 2 Euro-Cent. ;)
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Glombi am 21.10.04 - 15:08:47
Am Code will ich eigentlich nichts ändern, da es Fremdcode ist. Und es ist wohl an einigen Stellen dort.
Mich interessiert in erster Linie einmal warum identischer Code auf zwei PC unterschiedliche Ergebnisse liefert.
Das ganze auch noch unter Citrix, wo der einzelne also gar nicht soviel verstellen kann.

Andreas

Ergänzung: Der Fehler muss auf einem bestimmten Terminal Server verursacht werden. Soweit steht es mal fest.
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Glombi am 27.10.04 - 14:03:11
Die Ursache ist gefunden:

Dir$(drivNam , 8 )
liefert "", wenn im Verzeichnis drivNam keine Datei sondern nur Unterordner liegen.

Workaround:  Dir$(drivNam , 16 )
verwenden.

Um zu prüfen, ob das Volume drivNam da ist, taugen beide Varianten nichts bzw. gleich viel, da immer der Fehler "Path not found" auftritt. Diesen kann man dann natürlich abfangen und weiss damit, ob das Verzeichnis exisitert.

Meine Schluss: Dir$(..., 8 ) ist buggy.

Andreas

Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Thomas Schulte am 27.10.04 - 14:14:13
dir$(..., 16) hat offensichtlich auch so seine Mäuse. Zumindest liefert er mir für Dateien mit der Endung ZIP als File Attribute ein "das ist ein Verzeichnis" zurück, womit man beim Parsen durch ein Verzeichnis wieder auf die alte Methode guck mal nach rechts ob da was steht angewiesen ist, um ein Verzeichnis von einer Datei unterscheiden zu können.

Blödes System,.

Thomas
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Glombi am 27.10.04 - 14:22:20
Insgesamt scheint das noch nicht so richtig ausgereift zu sein, fürchte ich.

Andreas
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: m3 am 27.10.04 - 14:28:43
dir$(..., 16) hat offensichtlich auch so seine Mäuse. Zumindest liefert er mir für Dateien mit der Endung ZIP als File Attribute ein "das ist ein Verzeichnis" zurück, womit man beim Parsen durch ein Verzeichnis wieder auf die alte Methode guck mal nach rechts ob da was steht angewiesen ist, um ein Verzeichnis von einer Datei unterscheiden zu können.

Blödes System,.

Thomas
Dein System ist Windows XP? Dann eine Beschwerdemail an salzamt@microsoft.at.  IBM/Lotus kann hier nix dafuer, das ist ein XP-"Feature".

Du kannst aber XPs Verhalten, ZIP-Files als Ordner anzusehen mit
regsvr32 /u %windir%\system32\zipfldr.dll
deaktivieren. Dann sind es wieder "normale" Files.
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: m3 am 27.10.04 - 15:03:58
Meine Schluss: Dir$(..., 8 ) ist buggy.
Buggy wuerde ich nicht sagen, eher "Broken as Designed". Schliesslich verhaelt es sich ja wie dokumentiert.
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Thomas Schulte am 27.10.04 - 15:24:00
@m3
Mit dem blöden System war nicht notwendigerweise Domino gemeint. Das dies ein Zusammenspiel von XP und Domino ist war mir dann klar, als die gleiche Routine auf einem 2000Pro Rechner korrekte Ergebnisse zurücklieferte. Trotzdem nervt das einfach, wenn etwas wie du so schön schreibst "broken as designed" ist.

Dier Workaround ist gut, die Frage ist halt nur bei welchen anderen FileTypen liefert er mir noch das selbe Ergebnis zurück?

Thomas
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: eknori am 27.10.04 - 15:49:00
Zitat
@eknori:
Der Fehler tritt hier auf (CLASSAttachment):

Leider habe ich auch noch keine Lösung; werde mal sehen, wie ich den Code umstricken muß, damit es funzt. Eine API mehr oder Weniger in der Klasse machen den Kohl auch nicht mehr fett
Titel: Re: Dir$(....,8) liefer unterschiedliche Ergebnisse
Beitrag von: Glombi am 27.10.04 - 16:04:43
Wenn Du an den entsprechenden Stellen den Backslash weglaesst, geht es ja. Also so in etwa:

dim VolLabel as string
if Right$(drivNam,1) = "\" then
 VolLabel = strleft(drivName,"\")
else
 VolLabel = drivName
end if

IsDriveAvailable = (Dir$(VolLabel , 8 ) <> "")

Andreas