RequestDir() mit relativem Startpfad

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Bamboo

Betreff: RequestDir() mit relativem Startpfad

BeitragDi, Jun 10, 2014 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich komme einfach nicht auf die Lösung folgenden Problems:
Ich möchte eine RequestDir()-Abfrage mit einem relativen Pfad als Startpunkt aufrufen. Was mit einem absoluten Pfad ohne Probleme funktioniert, schafft bei relativen Pfaden Probleme: der vorgegebene "Startpfad" wird einfach ignoriert.

main.bb:
BlitzBasic: [AUSKLAPPEN]
;Beispiel eines absoluten Pfades
Const PATH_ABSOLUTE$ = "C:\Users\"

;Beispiel eines relativen Pfades zum übergeordneten Ordner
Const PATH_RELATIVE_ABOVE$ = "..\above\"
;Beispiel eines relativen Pfades zum eigenen Ordner
Const PATH_RELATIVE_NEXT_TO$ = ".\"
;Beispiel eines relativen Pfades zum übergeordneten Ordner
Const PATH_RELATIVE_BELOW$ = ".\below\"


;Überprüft, ob Verzeichnisse existieren
If (FileType(PATH_ABSOLUTE$) = 2) Then Print "Absoluter Pfad existiert"

If (FileType(PATH_RELATIVE_ABOVE$) = 2) Then Print "Relativer Pfad zum uebergeordneten Ordner existiert"
If (FileType(PATH_RELATIVE_NEXT_TO$) = 2) Then Print "Relativer Pfad zum eigenen Ordner existiert"
If (FileType(PATH_RELATIVE_BELOW$) = 2) Then Print "Relativer Pfad zum untergeordneten Ordner existiert"


;Erprobt Request-Abfrage
RequestDir("Absoluter Pfad", PATH_ABSOLUTE$)

RequestDir("Relativer Pfad zum übergeordneten Ordner", PATH_RELATIVE_ABOVE$)
RequestDir("Relativer Pfad zum eigenen Ordner", PATH_RELATIVE_NEXT_TO$)
RequestDir("Relativer Pfad zum untergeordneten Ordner ", PATH_RELATIVE_BELOW$ )

WaitKey()

Zum Testen sollte der Code in einem Verzeichnis folgender Struktur gespeichert werden:
Code: [AUSKLAPPEN]
> \beliebiger Ordner\
   > \test\
      > main.bb
      > \below\
   > \above\

Wie man beim Ausführen sieht, wird der absolute Pfad als Startverzeichnis übernommen, nicht aber die relativen Pfadangaben, welche jedoch von allen anderen Blitz-Funktionen zur Datenverwaltung akzeptiert werden (hier: FileType()).

In einem anderen Forumsartikel habe ich gelesen, dass ein Startpfad grundsätzlich nicht möglich wäre (https://www.blitzforum.de/foru...quest+pfad). Der Eintrag ist jedoch von 2004, ich nehme an, diese Funktion wurde in späteren Updates (zumindest für absolute Pfade) übernommen. Dort gab es auch Hinweise, das mit der WinAPI zu lösen, aber ich hoffe, es gibt einen anderen Weg.

Vermutlich gibt es eine ganz einfache Lösung, aber ich komme einfach nicht drauf. Ich habe auch keine Funktion gefunden, mit der man den absoluten Pfad des ausgeführten Codes ermitteln könnte, wodurch man sich einen relativen Pfad ja "zusammenbasteln" könnte.

Also: wie kann ich RequestDir() mit relativem Startpfad verwenden?
Ich freue mich über jeglichen Rat!

Xeres

Moderator

BeitragDi, Jun 10, 2014 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach CurrentDir vorne dran hängen und fertig, würde ich sagen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jun 10, 2014 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
da musßt du tricksen.....

mit
currentdir und changedir sollte das einfach möglich sein!

1.
currentdir() sollte deine Mainadresse sein wenn das Proggi gestartet wird

2, changedir (currentdir + (deine Konstanten) Stellt es auf dein neuen Pfad

3 Requestdir (Titel ,currentdir) sollte jetzt funktionieren da es eine Absolute Pfadangabe ist

damit das immer geht muss per Changedir wieder auf das Startdir gestellt werden!
[BB2D | BB3D | BB+]
 

Bamboo

BeitragDi, Jun 10, 2014 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Aaah, ich hatte schon erwartet, dass es so eine Funktion gibt, ich habe sie einfach nicht gefunden ^.^.

Nun ja, danke für die schnelle Hilfe Smile

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group