Seite 3 von 4

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 03:48
von ts-soft
al90 hat geschrieben:Hier mein (Endgültiger) Letzter versuch für Heute. :mrgreen:
Sieht meinem Code aber verdächtig ähnlich :mrgreen:
und funktioniert natürlich auch nicht :twisted:

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 03:53
von al90
ts-soft hat geschrieben:
al90 hat geschrieben:Hier mein (Endgültiger) Letzter versuch für Heute. :mrgreen:
Sieht meinem Code aber verdächtig ähnlich :mrgreen:
und funktioniert natürlich auch nicht :twisted:
Grrr ich hatte den Falschen code noch im Clipboard. :lol:
Code auf Seite 2 angepasst. :allright:

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 03:57
von rolaf
Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Von alledem nix zu sehen...

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 14:12
von salbei
ts-soft hat geschrieben:
a14xerus hat geschrieben:Bin ich nur doof oder kann mir mal einer die jetzt aktuellste Version der "GetParentDirectory" Procedure geben ? :D
Nein, da bisher noch keine korrekt funktioniert!
Blind?
Aber für dich gerne nochmal:

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://")
Und ja, ich hatte vorher einen kleinen Fehler drin, das lag an dem GetPathPart. Dem Befehl ist es leider egal, ob ich dort eine Datei oder einen Ordner am Ende stehen habe, er interpretiert alles nach dem letzten Backslash als Datei. Evtl. könnte man ihn daher trotzdem einsetzen, um eine kürzere Version zu schreiben.

@Falo: Cool an der Sache ist, dass man auch Protokolle und unterschiedliche Seperatoren einsetzen kann ;-)

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 14:30
von ts-soft
salbei hat geschrieben:Blind?
Fragste Dich das selber? Die beiden Debugs mit Datei zeigen nicht das ParentDirectory, die
zeigen das Directory :wink:

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 14:50
von helpy
Hallo zusammen!

Da gibt es ein Problem!

Wenn es sich beim angegenben Pfad um eine existierende Datei oder ein existierendes Verzeichniss handelt, dann kann ja überprüft werden, ob der Pfad auf ein(e) bestehende(s) Datei/Verzeichnis zeigt ... dann kann auch eindeutig das Parent-Verzeichnis bestimmt werden.

Wenn es sich aber um einen Pfad handelt, der NOCH NICHT existiert und erst erstellt werden muss, dann kann das Parent-Verzeichnis nicht eindeutig bestimmt werden!
Beispiel: C:\Pfad\zum\neuen\Verzeichnis\test.jpg
... wobei der grüne Teil existiert und der rote nicht
==> Wer sagt nun der Routine, ob test.jpg ein Verzeichnis oder eine Datei ist?
In diesem Fall kann sich die Funktion nur an das Trennzeichen der einzelnen Verzeichnisse halten!

cu,
;-)

Re: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 14:59
von ts-soft
@helpy
siehe seite 2, letztes Codebeispiel von Al90, der funktioniert, der fragt nach nicht vorhandener
Extension :wink:

Der muss nur noch in den ersten Beitrag, damit der Rest hier aufgeräumt werden kann.

Re: Diskussion: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 15:02
von Kaeru Gaman
so, der Rest ist aufgeräumt, der "Code, Tips & Tricks"-Beitrag kann neu erstellt werden.

Re: Diskussion: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 15:08
von helpy
Hi ts-soft!

Es kann aber sein, dass jemand ein Verzeichnis mit dem Namen test.test erstellt!

Ich selbst verwende relativ oft Verzeichnisse mit "." im Namen! Da hat diese Funktion, dann wohl auch ein Problem!

GetExtensionPart() ... ermittelt die Extension, indem sie alle Zeichen hinter dem letzten Punkt zurückliefert.

Code: Alles auswählen

Debug GetExtensionPart( "C:\pfad\zum\Verzeichnis.mit.Punkten" )
Außerdem: Es gibt auch Dateinamen, die keine Extension haben!

Für Dein Problem gibt es meiner Meinung nach keine eindeutige programmiertechnische Lösung!

cu,
guido

Re: Diskussion: Get ParentDirectory - (Mit nur einer Zeile)

Verfasst: 08.04.2010 15:21
von ts-soft
helpy hat geschrieben:Für Dein Problem gibt es meiner Meinung nach keine eindeutige programmiertechnische Lösung!
Da magste Recht haben, aber ich verwende grundsätzlich keine punkte in verzeichnisnamen, ist auch
nicht ISO konform, könnte beim brennen oder im Netzwerk problematisch werden. Selbst Umlaute
vermeide ich weitgehend. Aber bei anderen kann man davon nicht ausgehen, haste schon Recht.