Domino 9 und frühere Versionen > Entwicklung

Prüfen, ob ein Pfad vorhanden ist

<< < (2/3) > >>

Thomas Schulte:

--- Zitat von: Semeaphoros am 13.04.05 - 16:03:39 ---Aber sicher doch, schau Dir mal die Option Attr-Mask an und verwende die Maske mit dem Wert 16

--- Ende Zitat ---
Das geht aber unter Umständen in die Hose. Z.B. bei Dateien ohne Endung. Die erkennt er nämlich auch als Dir.

Thomas Schulte:
Die Variante die ich mal entwickelt habe und die wirklich (unter Windows) hundertprozentig funktioniert versucht das Dir zu öffne und erkennt dadurch den unterschied zwischen Dir und File ohne Extention.
Declarations:
Dim directorylist List As String
Dim startentryposition As Integer

Sub finddirectories(basedir As String)
   ' finds all directory entries and subentries in a given path
   Dim filename As String
   Dim fileattribute As Integer
   Dim isdir As Integer
   Dim fromcount As Integer
   Dim setfirstentryposition As Integer
   Dim setlastentryposition As Integer
   Dim dircount As Integer
   Dim i As Integer
   
   On Error Resume Next
   
   ' save the entryposition due to the recursion
   setfirstentryposition = startentryposition   
   
   ' get the file names
   fileName = Dir$(basedir & "\*.*",16)
   Do While fileName$ <> ""
      fileattribute = Getfileattr (basedir + "\" + fileName )
      If fileattribute = 16 Then
         ' check if this is really a directory
         isdir = checkdir(basedir + "\" + Filename)
         If isdir = True Then
            If filename <> "." And filename <> ".." Then
               directorylist(Cstr(startentryposition)) = basedir & "\" & Filename
               startentryposition = startentryposition + 1
            End If
         End If
      End If
      filename = Dir$()
   Loop
   
   If setfirstentryposition < startentryposition Then
      setlastentryposition = startentryposition
      For i = setfirstentryposition To setlastentryposition -1
         Call finddirectories(directorylist(Cstr(i)))   
      Next
   End If
   
End Sub

Function checkDir( path As String ) As Integer
   
   On Error Resume Next
   
   CheckDir = False
   
   Chdrive Left( path, 1 )
   Chdir path
   
   If Curdir = path Then         
      CheckDir = True
   End If
   
End Function

rar:
Ich glaube in meinem Fall reicht das Dir.
Aber trotzdem vielen Dank für die Funktion, Thomas.
Kann ich sicher noch gebrauchen :)

Semeaphoros:

--- Zitat von: Thomas Schulte am 13.04.05 - 16:42:14 ---Das geht aber unter Umständen in die Hose. Z.B. bei Dateien ohne Endung. Die erkennt er nämlich auch als Dir.

--- Ende Zitat ---

Falsch, Thomas, die Attributmaske sorgt dafür, dass das eben nicht schief läuft. Braucht keine Verrenkungen über einen Versuch, die Datei zu öffnen. Das funktioniert einwandfrei. Einzig das Root-Verzeichnis lässt sich so nicht findnen (aber da gibts eigentlich auch kein Bedürfnis für)

Semeaphoros:
Sorry, Thomas, Du hast Recht, ich hab das verwechselt mit dem zugrundeliegenden API-Call, dort bekommt man neben dem Directory-Namen auch noch die Attribute des Eintrages zurück und kann dann natürlich direkt damit überprüfen, um was für eine Rückgabe es sich handelt. Basic/LotusScript unterdrückt diesen Rückgabewert leider, da nur ein einziger Rückgabewert zurückgeliefert wird.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln