Seite 1 von 2

Pfad der purebasic.prefs

Verfasst: 18.05.2008 16:14
von michel51
Hallo zusammen.

ich hab da ein kleines Problem, dass ich leider nicht alleine lösen kann. Ich hoffe, hier bekomme ich eine Antwort.

Ich brauche für ein Projekt den/die Pfad(e) der purebasic.prefs.
Auf dem Mac funktioniert der Beispielcode einwandfrei.

Code: Alles auswählen

Global Only, Space, FileName.s, String.s, MyTab.l

; Tablaenge aus Preference-Datei holen
CompilerSelect #PB_Compiler_OS
   CompilerCase #PB_OS_Linux
      OpenPreferences(GetEnvironmentVariable("HOME") + ".purebasic/purebasic.prefs")   ; Pfad in Ordnung ???
   CompilerCase #PB_OS_MacOS 
      OpenPreferences(GetEnvironmentVariable("HOME") +"/.purebasic/purebasic.prefs")
   CompilerDefault   ; Windows ???
      OpenPreferences(GetPathPart(GetEnvironmentVariable("HOME")) + "purebasic.prefs")   ; Pfad anpassen !!!
CompilerEndSelect

PreferenceGroup("Global")
   MyTab =ReadPreferenceLong("TabLength", 1)
ClosePreferences()

Debug "Tablaenge: "+Str(MyTab)
Bei Linux könnte der Pfad stimmen (nach meinen Informationen). Bin mir aber nicht sicher.
Die Windows-Pref-Datei habe ich mit dem angegebenen Pfad nicht gefunden. Der wird sicher nicht richtig sein.
Kann mir hier jemand helfen? Es gibt ja Gott sei Dank etliche Linux / Windows User hier in diesem Forum.

Danke schon mal im Voraus.

Verfasst: 18.05.2008 16:47
von marco2007

Code: Alles auswählen

GetEnvironmentVariable("HOMEPATH")

Verfasst: 18.05.2008 20:22
von michel51
marco2006 hat geschrieben:

Code: Alles auswählen

GetEnvironmentVariable("HOMEPATH")
Danke.
Leider ist dem Verzeichnis die purebasic.prefs nicht zu finden.
Ich habe mal nachgeschaut, und die Datei gefunden in:

Code: Alles auswählen

C:\Dokumente und Einstellungen\klaus.lengfeld\Anwendungsdaten\PureBasic\
Der Befehl

Code: Alles auswählen

GetEnvironmentVariable("HOMEPATH")
gibt mir aus:

Code: Alles auswählen

\Dokumente und Einstellungen\klaus.lengfeld
was aber nicht weit genug geht (aber richtig sein kann). Mit

Code: Alles auswählen

GetEnvironmentVariable("HOMEPATH") + "\Anwendungsdaten\PureBasic\PureBasic.prefs"
wird die Datei also nicht gefunden.
Beutze ich aber

Code: Alles auswählen

GetHomeDirectory() + "Anwendungsdaten\PureBasic\PureBasic.prefs"
dann funktioniert es.
Allerdings ist es sehr seltsam, dass die purebasic.pref nicht im HomeDirectory installiert wurde.

Auf dem Mac reicht der HomePfad aus. Dort befindet sich ein (unsichtbares) Verzeichnis ".purebasic" und darin die pref.
Wie immer: SEHR EINFACH :D
Oder ist das Verhalten vielleicht ein Bug in der Windows-Version?

Verfasst: 18.05.2008 20:34
von Kaeru Gaman
michel51 hat geschrieben:Auf dem Mac reicht der HomePfad aus. Dort befindet sich ein (unsichtbares) Verzeichnis ".purebasic" und darin die pref.
Wie immer: SEHR EINFACH :D
hunderte unsichtbare ordner, nicht nach games und anwendungen getrennt?
geschmackssache.
dass es allein mit der HOME funktioniert, liegt einzig daran, dass MAC dann wohl den anwendungsnamen ergänzt.
wenn windows diese funktion anbieten würde, würde ich sie abschalten.
michel51 hat geschrieben:Allerdings ist es sehr seltsam, dass die purebasic.pref nicht im HomeDirectory installiert wurde.
nein, das ist logisch.
PureBasic ist eine Anwendung, also ist sein ordner Home\Anwendungen\Purebasic.
es direkt in die Home zu kacken wär unfein.

das problem ist ein verständnisproblem:
die GetHomeDirectory() funktion liefert eben den HOMEpfad des Benutzers,
nicht den der Anwendung.

GetEnvironmentVariable("HOMEPATH")
liefert dir nur den PATH, nicht das Laufwerk, musst du wohl noch C: vorne vor schreiben, damit es geht.

Windows und Mac sind nunmal völlig unterschiedliche philosophien, schon immer gewesen.
wie eine cross-platform-entwicklungsumgebung dann aussehen muss,
darüber kann man wohl geteilter ansicht sein,
aber beide funktionen liefern korrekt die antwort, die das OS ihnen gibt.
die beiden OS sind halt unterschiedlicher auffassung, was das angefragte Objekt nun wirklich ist.
aber aber einem Mac-Progger zuzumuten, mit der Win-Antwort zurechtzukommen,
wäre genauso falsch, wie einem Win-Progger zuzumuten, mit der Mac-Antwort zurechtzukommen.
wenn du Cross-Platform proggen willst, musst du eben die Unterschiede deiner benutzen OS kennen.

Verfasst: 18.05.2008 20:56
von edel
Statt HomePath, nimm lieber AppData.

Verfasst: 18.05.2008 20:57
von michel51
Kaeru Gaman hat geschrieben:
michel51 hat geschrieben:Auf dem Mac reicht der HomePfad aus. Dort befindet sich ein (unsichtbares) Verzeichnis ".purebasic" und darin die pref.
Wie immer: SEHR EINFACH :D
hunderte unsichtbare ordner, nicht nach games und anwendungen getrennt?
Natürlich nicht. Der .purebasic-Ordner wurde hier hin installiert, es gibt selbstverständlich noch andere, getrennte Ordner, die sich nicht hier im Home befinden, aber wie du schon sagst:
geschmackssache
dass es allein mit der HOME funktioniert, liegt einzig daran, dass MAC dann wohl den anwendungsnamen ergänzt.
Nein! Auch ich muss ".purebasic/purebasic.prefs" scheiben, der Anwendungsname wird nicht ergänzt.
PureBasic ist eine Anwendung, also ist sein ordner Home\Anwendungen\Purebasic.
Dann sollte/müsste es einen Befehl geben, der mir diesen "Home"-Ordner der Anwendung zurückgibt.
musst du wohl noch C: vorne vor schreiben, damit es geht.
Das wird es wohl gewesen sein. Ich denke da nicht immer dran, da ich es auf dem Mac nicht brauche :oops:

Trotzdem Danke für die Aufklärung.

Re: Pfad der purebasic.prefs

Verfasst: 30.01.2012 17:21
von CSHW89
Ich weiß, der Thread ist uralt. Allerdings hab ich jetzt die gleiche Frage. Funktioniert dieser Code auch in Linux und Mac? In Windows funktionierts.

Und noch ne zweite Frage: Müsste ich nicht erst prüfen, ob PureBasic als Portable gestartet wird? Dann müsste die Pref-Datei doch wo anders liegen. Wie würde man das am besten machen?

Code: Alles auswählen

Global MyTab.l

; Tablaenge aus Preference-Datei holen
CompilerSelect #PB_Compiler_OS
   CompilerCase #PB_OS_Linux
      OpenPreferences(GetEnvironmentVariable("HOME") + ".purebasic/purebasic.prefs")
   CompilerCase #PB_OS_MacOS
      OpenPreferences(GetEnvironmentVariable("HOME") +"/.purebasic/purebasic.prefs")
   CompilerDefault
      OpenPreferences(GetEnvironmentVariable("APPDATA") + "/purebasic/purebasic.prefs")
CompilerEndSelect
PreferenceGroup("Global")
   MyTab =ReadPreferenceLong("TabLength", 1)
ClosePreferences()

Debug "Tablaenge: "+Str(MyTab)
lg kevin

Re: Pfad der purebasic.prefs

Verfasst: 30.01.2012 17:30
von RSBasic
@CSHW89
2.F.: Du könntest so machen, dass der Anwender selber die Einstellungsdatei auswählt.

Re: Pfad der purebasic.prefs

Verfasst: 30.01.2012 17:36
von CSHW89
:mrgreen: Jo danke, hab ich mir auch grad gedacht, als ich die weiteren Optionen der PB-IDE gesehen hab: es gibt nämich nicht nur Portable, sondern auch noch die Option "/P"
lädt/speichert alle Einstellungen aus der bzw. in die angegebene Datei.
Hab kein Lust da auf alles zu achten :lol: .

Ok, aber den Standardordner würd ich schon gern angeben, also den Home/App-Ordner. Deshalb bleibt meine erste Frage: Sind die Linux und Mac-Ordner korrekt?

lg kevin

Re: Pfad der purebasic.prefs

Verfasst: 30.01.2012 23:45
von Shardik
CSHW89 hat geschrieben:Sind die Linux und Mac-Ordner korrekt?
Jein... :wink:

Auf MacOS X 10.6.8 (Snow Leopard) ist der Pfad korrekt, unter Linux
(getestet unter andLinux/Kubuntu 9.04) muß er genauso aussehen
wie auf dem Mac (also mit führendem Schrägstrich). Daher könnte
man Dein Beispiel so umbauen:

Code: Alles auswählen

Global MyTab.l

; Tablaenge aus Preference-Datei holen
CompilerSelect #PB_Compiler_OS
   CompilerCase #PB_OS_Windows
      OpenPreferences(GetEnvironmentVariable("APPDATA") + "/purebasic/purebasic.prefs")
   CompilerDefault
      OpenPreferences(GetEnvironmentVariable("HOME") +"/.purebasic/purebasic.prefs")      
CompilerEndSelect
PreferenceGroup("Global")
   MyTab =ReadPreferenceLong("TabLength", 1)
ClosePreferences()

Debug "Tablaenge: "+Str(MyTab)