Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 13.04.05 - 15:45:32

Titel: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: rar am 13.04.05 - 15:45:32
Hi,

kennt jemand eine Möglichkeit, wie ich das machen kann?

lG
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: Semeaphoros am 13.04.05 - 15:54:10
Pfad im Betriebssystem? Oder wo? Mit LS? Schau Dir Dir$ an, oder gib etwas mehr Infos
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: rar am 13.04.05 - 15:57:58
Ein Pfad im Betriebssystem mit LS.
Z.B. "C:\Daten\Notes\Unterordner\"

Dir$ geht (glaub ich) nicht, da ich mit Dir nur Files aber keine Pfade auslesen kann.  :-\
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag 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
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: rar am 13.04.05 - 16:21:27
Uups...  :-[
hab ich doch irgendwie übersehen. *peinlich*

Danke Jens. Klappt wunderbar (http://www.my-smileys.de/smileys2/huepfsmiley.gif)

-daniel
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: Thomas Schulte am 13.04.05 - 16:42:14
Aber sicher doch, schau Dir mal die Option Attr-Mask an und verwende die Maske mit dem Wert 16
Das geht aber unter Umständen in die Hose. Z.B. bei Dateien ohne Endung. Die erkennt er nämlich auch als Dir.
Titel: Wusste ich doch das ich das noch habe.
Beitrag von: Thomas Schulte am 13.04.05 - 16:51:22
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
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: rar am 13.04.05 - 17:11:55
Ich glaube in meinem Fall reicht das Dir.
Aber trotzdem vielen Dank für die Funktion, Thomas.
Kann ich sicher noch gebrauchen :)
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: Semeaphoros am 13.04.05 - 18:07:32
Das geht aber unter Umständen in die Hose. Z.B. bei Dateien ohne Endung. Die erkennt er nämlich auch als Dir.

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)
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: Semeaphoros am 13.04.05 - 19:35:47
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.
Titel: Re: Prüfen, ob ein Pfad vorhanden ist
Beitrag von: koehlerbv am 13.04.05 - 20:41:27
Probier mal

Code
strDirTest = Dir$ (strPathName & "\*")

Wenn das Verzeichnis nicht existent ist, geht das mit dieser simplen Methode in die Hose - das ergibt dann eine auswertbare Fehlermeldung, die man mit einer Kombination aus

Vor dem Aufruf:
On Error Goto ErrorDirTest

und

in der Fehlerroutine mit einem
<Lege das Verzeichnis an oder wie auch immer>
On Error Goto <Normale Fehlerroutine>
Resume Next

zur gewünschten Ergebnisgestaltung benutzen kann.

HTH,
Bernhard