Guten Tach!
Ich würd gerne wissen, ob jemand eine Möglichkeit kennt, zu erkennen ob ein Pfad in einem Verzeichnis oder einer Datei endet.
Da verzeichnisse ja punkte enthalten können und Dateien auch ohne Endung auskommen, ist es nicht immer offentsichtlich, ob der angegebene Pfad (als String) ein Verzeichnis oder eine Datei ist.
unter VB6 hätte ich einfach wie folgt gehandelt:
Code:
If CBool(GetAttr("FileArea\Scripts") And vbDirectory) Then
'verzeichnis
Else
'kein verzeichnis
End if
GetAttr scheint der aber nicht zu kennen (ebenso wenig die Funktion "Dir")
Wenn es geht möchte ich gerne auf die FileSystemObject verzichten.
vielleicht weiß ja jemand einen nützlichen Tipp
mfg Balmung
also in der b10 musst du schon mit dem File System arbeiten, aber in der b11 gibts ne schöne Funktion: DirExists
Ein Beispiel:
Code:
If DirExists(FileAreaHome&"Scripts") Then
'Verzeichnis
Else
'Exestiert nicht, oder ist kein Verzeichnis
End If
AnGeL Party Line Version 1.6.2 Beta 11
Ich habs genau so ausprobiert, und auch versucht verschiedene Parameter einzugeben.
Hab auch mal mit DirExist probiert.
aber dummerweise meldet der Bot mir folgenden Fehler:
Code:
[Sat 23:43:29] <Ichigo> *** Scripting error in 'test.asc':
[Sat 23:43:29] <Ichigo> Error : 13 (Typen unverträglich: 'DirExists')
[Sat 23:43:29] <Ichigo> Position: Line 38, Column 2
[Sat 23:43:29] <Ichigo> Excerpt : out = "ja"
[Sat 23:43:29] <Ichigo> Command : Chan_Msg (#Neko-Mimi-Dan | ChaozZBubi | | !test)
[Sat 23:43:29] <Ichigo> *** End of error message
Code:
if DirExists(FileAreaHome & "Scripts") Then
out = "ja"
Else
out = "nein"
End If
EDIT:
Ich habe jetzt jedenfalls FSO benutzt.
Wäre schön wenn es zukünftig gute alternativen geben würde, die nicht auf FSO zurückgreifen
mfg Balmung
probiers mal mit DirExist
Wunderschönen Guten Morgen,
Nettes Thema, hab ich grad auch für was anderes gebraucht. Da mich fso auch nicht wirklich zufrieden gestimmt hat und ich ohne ActiveX auskommen Wollte hab ich mir einfach mal folgendes überlegt:
Code:
if InstrRev(<Pfadstring>, ".") < InstrRev(<Pfadstring>, "/") Then
'ein Verzeichnis
vFolder = "True"
Else
'eine Datei
vFolder = "False"
End If
Das Prinzip ist Recht einfach. Es wird einfach geprüft ob nach dem letzten "/" noch ein Punkt kommt, der ja nunmal eine Datei identifiziert wegen der DateiEndung (und nein, ich kenn grad kein Beispiel für ne ordentliche Datei die ohne Endung aus kommt, denn nur was Windows nicht anzeigt, ist trotzdem vorhanden). Kommt ein Punkt isses ne Datei, kommt kein Punkt ist es ein Verzeichnis. Nun muss man nur noch Prüfen obs vorhanden ist, stellt ja keine großen Probleme mehr dar.
Edit: alternativ kann man ja auch noch prüfen ob der letzte "/" auch das letzte Zeichen ist
Code:
if Len(<Pfadstring>) = InstrRev(<Pfadstring>, "/") Then
'ein Verzeichnis
vFolder = "True"
Else
'eine Datei
vFolder = "False"
End If
Sollte so schon ausreichen

Das setzt dann natürlich vorraus, dass die anzusprechende Datei eine endung hat, und ein Verzeichnis keinen Punkt.
Eine imho recht unglückliche Lösung, die aber funktionieren kann, wenn man sich eben an diese Kriterien hält.
Letzteres Beispiel würd ich aber einfach mit Right() machen:
Code:
If Right(Pfad, 1) = "\" Then
...
mfg Balmung

Balmung schrieb:Das setzt dann natürlich vorraus, dass die anzusprechende Datei eine endung hat, und ein Verzeichnis keinen Punkt.
Eine imho recht unglückliche Lösung, die aber funktionieren kann, wenn man sich eben an diese Kriterien hält.
mfg Balmung 
falsch, denn wenn wenn das Verzeichnis einen Punkt hätte kommt definitiv danach wieder ein / oder \ und somit wäre wieder das letzte zeichen ein / oder \ und somit eindeutig ein Verzeichnis. von daher ist die Lösung nicht so unglücklich wie du sie darstellst und funktioniert auch.
Zudem Frag ich mich wieso man Verzeichnisse mit Punken und Datein ohne Dateiendung haben muss. Der Sinn bleibt mir verborgen, ändert auch nix daran das die Lösung funktioniert. Ich kann aber durchaus nachvollziehen das du deine Lösung und deine DLL irgendwie an den Mann bringen willst und das durch das hervorheben deiner Lösung tust
