Seite 1 von 2

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

Verfasst: 11.08.2009 14:18
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

Verfasst: 11.08.2009 14:27
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

Verfasst: 11.08.2009 14:29
von ts-soft

Code: Alles auswählen

Path.s = GetPathPart(ProgramFilename())
Debug Left(Path, Len(Path) - Len(StringField(Path, CountString(Path, "\") - 1, "\")))
:wink:

Verfasst: 11.08.2009 14:32
von dysti
super, ich danke euch.

Verfasst: 11.08.2009 14:34
von ts-soft
Hauptsache Du nutzt nicht GetCurrentDirectory(), es sei denn, Du hast den
Pfad vorher selber gesetzt mit SetCurrentDirectory() :wink:

Verfasst: 11.08.2009 14:37
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 ;)

Verfasst: 11.08.2009 18:08
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.

Verfasst: 11.08.2009 18:25
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

Verfasst: 11.08.2009 19:49
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()))

Verfasst: 11.08.2009 19:55
von Fluid Byte