Nach einer knappen Stunde Arbeit kam folgende Codezeile heraus:
Code: Alles auswählen
Procedure.s GetParentDirectory(Dir$, Seperator$ = "\", Protocol$ = "")
ProcedureReturn Protocol$ + Left(RemoveString(Dir$, Protocol$), Len(RemoveString(RemoveString(Dir$, Protocol$), Seperator$, #PB_Ignore, Len(RemoveString(Dir$, Protocol$)))) - FindString(ReverseString(RemoveString(RemoveString(Dir$, Protocol$), Seperator$, #PB_Ignore, Len(RemoveString(Dir$, Protocol$)))), Seperator$, 1)) + Seperator$
EndProcedure
Debug GetParentDirectory("C:\MainFolder\SubFolder_1\SubFolder_2\")
Debug GetParentDirectory("C:\MainFolder\SubFolder_1\")
Debug GetParentDirectory("C:\MainFolder\")
Debug GetParentDirectory("C:\")
Debug GetParentDirectory("C:\a\b\c\d\e")
Debug GetParentDirectory("\c\d\e")
Debug GetParentDirectory("c\d\e")
Debug GetParentDirectory(".\c\d\e")
Debug GetParentDirectory("./c/d/e", "/")
Debug GetParentDirectory("./c\d/e", "/")
Debug GetParentDirectory("./c\d\e", "/")
Debug GetParentDirectory("./c/d\e", "/")
Debug GetParentDirectory("\\UBUNTU_DESKTOP\pb-ubuntu32\")
Debug GetParentDirectory("d:\ts-temp\simpsons_006.jpg")
Debug GetParentDirectory("d:\ts-temp\test\testy\simpsons_006.jpg")
Debug GetParentDirectory("google.de/index.php", "/")
Debug GetParentDirectory("google.de/test/index.php", "/")
Debug GetParentDirectory("google.de/test/test2/index.php", "/")
Debug GetParentDirectory("http://www.google.de/test/test2/index.php", "/", "http://")
Debug GetParentDirectory("ftp://www.google.de/test/test2/index.php", "/", "ftp://")
Debug GetParentDirectory("ftp://www.google.de/", "/", "ftp://")
Debug GetParentDirectory("ftp://www.google.de/test", "/", "ftp://")
Debug GetParentDirectory("ftp://www.google.de/test/test2/", "/", "ftp://")
Debug-Ausgabe:
Code: Alles auswählen
C:\MainFolder\SubFolder_1\
C:\MainFolder\
C:\
C:\
C:\a\b\c\d\
\c\d\
c\d\
.\c\d\
./c/d/
./c\d/
./
./c/
\\UBUNTU_DESKTOP\
d:\ts-temp\
d:\ts-temp\test\testy\
google.de/
google.de/test/
google.de/test/test2/
http://www.google.de/test/test2/
ftp://www.google.de/test/test2/
ftp://www.google.de/
ftp://www.google.de/
ftp://www.google.de/test/
Verdammt ist der Code geil

Wenn den jemand noch verkürzen mag, nur zu, Bedingung ist eine einzige Zeile

Vielleicht kann hier jemand den Code-Tag fixen, der Zeilenumbruch kommt unerwartet
Edit:
Da es hier wirklich nur darum geht, den Parentfolder herauszufinden, ist es Aufgabe des Nutzers, als String einen Pfad anzugeben. Man erhält wirklich nur den übergeordneten Ordner, aus Sicht einer Datei ist der Parentfolder also der Ordner, in dem die Datei selbst liegt. Möchte man den übergeordneten Ordner eines Ordners, in dem die Datei liegt, so sollte man die Funktion einfach rekursiv aufrufen.