Diskussion: Get ParentDirectory - (Mit nur einer Zeile)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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:
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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...
:::: WIN 10 :: PB 5.73 :: (x64) ::::
salbei
Beiträge: 6
Registriert: 08.04.2010 02:15

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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 ;-)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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,
;-)
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Get ParentDirectory - (Mit nur einer Zeile)

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

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

Beitrag von Kaeru Gaman »

so, der Rest ist aufgeräumt, der "Code, Tips & Tricks"-Beitrag kann neu erstellt werden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

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

Beitrag 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
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

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

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten