Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TomLudwig am 16.02.04 - 12:37:17
-
Hallo,
ich möchte überprüfen ob ein Ordner auf der Festplatte vorhanden ist oder nicht. Das ich ihn ggf. erstellen kann.
Dies geht mit $Dir(Path, Value)
Wenn der Path nur ein Verzeichnis tief ist z.B. "C:\Test" ist es kein Problem,
aber bei z.B. "C:\Test\Test2" bekomme ich die Fehlermeldung "Path not found".
Was mache ich falsch?
-
verschachtelte Verzeichnispfade kannst du mir der API von Windows anlegen
Declare Function MakePath Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (Byval lpPath As String) As Long
(in die declaration kopieren )
Sub Click(Source As Button)
Msgbox MakePath("d:\Test\test1\")
End Sub
-
Ja gut, ich möchte aber erst überprüfen ob es das Verzeichnis nicht schon gibt. Und da bekomm ich bei $Dir die Fehlermeldung...
-
Auch kein Akt:
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
-
Ich bekomm wieder die Fehlermeldung "Path not found" wenn ich mehr ein oder mehr unterverzeichnisse angebe...
-
komisch, bei mir geht es problemlos
(http://www.atnotes.de/attachments/chkdir.jpg)
-
ohh.... sorry ich hab den error-handler nicht mit übernommen.
Gut, aber ich hab jetzt das nächste Problem bei
MkDir "C:\Test\Test2"
bekomm ich wieder "Path not Found"
WARUM?
Er solls doch erstellen!
-
Hi,
es ist der gleiche Grund wie oben. Notes kann immer nur ein Verzeichnis erstellen.
Du musst erst das Stammverzeichnis erstellen und dann das Unterverzeichnis.
Axel
-
na danke, dann darf ich den kompletten string von vorn bis hinten durchgehen und zerlegen anhand der "\"
ODER???
-
eigentlich hatte ich dir die Funktion zum erstellen des verzeichnisbaums doch schon gepostet. Mit dem Check testest du, ob das Verzeichnis da ist; wenn nicht mit MakePath anlegen.
...
-
MakePath legt nur einen Ordner ohne Unterordner an....
-
Sorry, wenn das abschließende Zeichen ein "\" ist. Werden alle (Unter-)Ordner erstellt....
-
Hi,
ich hab vor einiger Zeit mal was aus dem Web gefischt.
Das Ganze besteht aus zwei Funktionen:
Function IsValidDir(sPath As String) As Integer
On Error Resume Next
attr% = Getfileattr(sPath)
If Err > 0 Then
IsValidDir = 1
Exit Function
End If
If (attr% And ATTR_DIRECTORY) Then IsValidDir = 0
End Function
Function MakeDir (sPath As String) As Integer
Dim sNewPath As String
Dim iPosi As Integer
If Right$(sPath,1) <> "\" Then sPath = sPath & "\"
MakeDir = 1
On Error Goto MakeDirError
Do
iPosi = Instr(iPosi + 1, sPath, "\")
If iPosi > 0 Then
sNewPath = Left$(sPath, iPosi - 1)
If IsValidDir(sNewPath) = 1 Then
Mkdir sNewPath
End If 'IsValidDir(sNewPath) = 0...
End If 'iPosi > 0...
Loop Until iPosi = 0
MakeDir = 0
Exit Function
MakeDirError:
Messagebox "Error " & Str(Err) & " : " & Error$
Resume Next
End Function
Beispiel:
Sub Click(Source As Button)
If MakeDir("E:\Test\Test1") = 1 Then
Messagebox "Fehler beim Anlegen des Verzeichnisses."
Else
Messagebox "Verzeichnis wurde erfolgreich angelegt."
End If
End Sub
Das Ergebnis sieht dann so aus:
E:\
|_ Test
|__Test1
Du darfst der Funktion nur einen Pfad übergeben. Der darf keinen Dateinamen enthalten.
Ich hoffe das hilft dir weiter.
Axel
-
Ich habs einfach mit der Funktion von eknori gelöst und festgelegt, dass Benutzer ein abschliesendes "\" Zeichen eingeben müssen.
Und siehe da... es funktioniert....
Danke....