Nach GetCurrentDirectory höheren Pfad extrahieren (gelöst)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Nach GetCurrentDirectory höheren Pfad extrahieren (gelöst)

Beitrag von dysti »

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
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
Little John

Beitrag von Little John »

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
Zuletzt geändert von Little John am 11.08.2009 14:30, insgesamt 1-mal geändert.
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

Beitrag von ts-soft »

Code: Alles auswählen

Path.s = GetPathPart(ProgramFilename())
Debug Left(Path, Len(Path) - Len(StringField(Path, CountString(Path, "\") - 1, "\")))
: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
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

super, ich danke euch.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
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

Beitrag von ts-soft »

Hauptsache Du nutzt nicht GetCurrentDirectory(), es sei denn, Du hast den
Pfad vorher selber gesetzt mit SetCurrentDirectory() :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
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Ich wollt gerade mit meinem bescheidenen Wissen

Code: Alles auswählen

a.s = "C:\pbexamples\db\access\db\"

Repeat
  a = Left(a,Len(a)-1)
Until Right(a,1)="\"

Debug a
anbieten... und der Thread ist schon wieder proppevoll ;)
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​​
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

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:

Code: Alles auswählen

LoadImage(0, "C:\pictures\..\foto.jpg")
Hier wird LoadImage() im pictures-Verzeichnis automatisch eine Stufe nach oben gehen.

Das ganze geht auch als relativer Pfad:

Code: Alles auswählen

CreateFile(0, "..\Logfile.txt")
Egal, in welchem Ordner sich das Program befindet, es wird seine Logdatei ein Verzeichnis höher anlegen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

AND51 hat geschrieben:Das ganze geht auch als relativer Pfad:

Code: Alles auswählen

CreateFile(0, "..\Logfile.txt")
Egal, in welchem Ordner sich das Program befindet, es wird seine Logdatei ein Verzeichnis höher anlegen.
Vorsicht!

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)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

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:

Code: Alles auswählen

SetCurrentDirectory(GetPathPart(ProgramFileName()))
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten