Nach GetCurrentDirectory höheren Pfad extrahieren (gelöst)
Nach GetCurrentDirectory höheren Pfad extrahieren (gelöst)
Hallo,
mit GetCurrentDirectory() ermittel ich den Pfad.
Dieser gibt z.B. "C:\pbexamples\db\access\db\" aus.
Ich möchte jetzt folgenden String extrahieren, der sollte
nach dem Extrahieren so aussehen:
"C:\pbexamples\db\access\"
Habe schon stringfield probiert.
Der gibt mir aber immer nur die einzelnen Bestandteile wieder.
Im Moment sehe ich vor lauter Bäume den Wald nicht!
Macht mich bitte sehend.
MfG Dysti
mit GetCurrentDirectory() ermittel ich den Pfad.
Dieser gibt z.B. "C:\pbexamples\db\access\db\" aus.
Ich möchte jetzt folgenden String extrahieren, der sollte
nach dem Extrahieren so aussehen:
"C:\pbexamples\db\access\"
Habe schon stringfield probiert.
Der gibt mir aber immer nur die einzelnen Bestandteile wieder.
Im Moment sehe ich vor lauter Bäume den Wald nicht!
Macht mich bitte sehend.
MfG Dysti
Zuletzt geändert von dysti am 11.08.2009 14:33, insgesamt 1-mal geändert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Du musst den Pfad von rechts nach links nach "\" durchsuchen. Zur Suche in einem String von rechts nach links gibt's hier im Forum einen eigenen Thread, wo Leute verschiedene Methoden vorgestellt haben.
//edit: Hier isser.
Gruß, Little John
//edit: Hier isser.

Gruß, Little John
Zuletzt geändert von Little John am 11.08.2009 14:30, insgesamt 1-mal geändert.
- 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
Code: Alles auswählen
Path.s = GetPathPart(ProgramFilename())
Debug Left(Path, Len(Path) - Len(StringField(Path, CountString(Path, "\") - 1, "\")))

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- 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
Hauptsache Du nutzt nicht GetCurrentDirectory(), es sei denn, Du hast den
Pfad vorher selber gesetzt mit SetCurrentDirectory()
Pfad vorher selber gesetzt mit SetCurrentDirectory()

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich wollt gerade mit meinem bescheidenen Wissen
anbieten... und der Thread ist schon wieder proppevoll 
Code: Alles auswählen
a.s = "C:\pbexamples\db\access\db\"
Repeat
a = Left(a,Len(a)-1)
Until Right(a,1)="\"
Debug a

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Wofür brauchst du das denn?
Wenn du den Pfad nur brauchst, um in in ReadFile(), OpenLibrary(), LoadImage(), etc. einzusetzen, dann reicht es völlig, zwei Punkte anzuhängen:Hier wird LoadImage() im pictures-Verzeichnis automatisch eine Stufe nach oben gehen.
Das ganze geht auch als relativer Pfad:Egal, in welchem Ordner sich das Program befindet, es wird seine Logdatei ein Verzeichnis höher anlegen.
Wenn du den Pfad nur brauchst, um in in ReadFile(), OpenLibrary(), LoadImage(), etc. einzusetzen, dann reicht es völlig, zwei Punkte anzuhängen:
Code: Alles auswählen
LoadImage(0, "C:\pictures\..\foto.jpg")
Das ganze geht auch als relativer Pfad:
Code: Alles auswählen
CreateFile(0, "..\Logfile.txt")
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Vorsicht!AND51 hat geschrieben:Das ganze geht auch als relativer Pfad:Egal, in welchem Ordner sich das Program befindet, es wird seine Logdatei ein Verzeichnis höher anlegen.Code: Alles auswählen
CreateFile(0, "..\Logfile.txt")
Relative Pfade beziehen sich auf das Arbeitsverzeichnis (siehe PB-Hilfe zu GetCurrentDirectory() und SetCurrentDirectory()) und nicht auf das Verzeichnis, in dem sich die Programmdatei befindet.
Das KANN übereinstimmen ... ist aber nicht unbedingt der Fall! ...das hängt davon ab, wie das Programm gestartet wurde!
cu, guido
Windows 10
PB Last Final / (Sometimes testing Beta versions)
PB Last Final / (Sometimes testing Beta versions)
In den meisten Fällen ist das Arbeitsverzeichnis auch das Verzeichnis, in dem sich das Programn auch tatsächlich befindet.
Um ganz sicher zu gehen, müsste man dann halt diesen Code ausführen:
Um ganz sicher zu gehen, müsste man dann halt diesen Code ausführen:
Code: Alles auswählen
SetCurrentDirectory(GetPathPart(ProgramFileName()))
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Windows 10 Pro, 64-Bit / Outtakes | Derek