Speichern von Preferences Crossplatform

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Speichern von Preferences Crossplatform

Beitrag von Bisonte »

Hallo.

Hier eine Frage an die Linux-, und Macnutzer.

Wo kann man bei den beiden Systemen gefahrlos (will sagen: man hat die erforderlichen Schreibrechte von Haus aus)
seine Konfigurationsdateien speichern ?

Unter Windows nehme ich gewöhnlich "C:\Users\Username\AppData\Roaming\MeinVerzeichnis\".
Gibt es so ein geartetes Verzeichnis auch auf den anderen Systemen ?

Wenn ja, wie heissen diese, bzw. wie komme ich an die Pfade heran ?
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
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Speichern von Preferences Crossplatform

Beitrag von RSBasic »

Bei Mac keine Ahnung, aber bei Linux kannst du deine Dateien im Home-Verzeichnis anlegen. Du kannst dort ein verstecktes Verzeichnis erstellen.
Beispiel:

Code: Alles auswählen

GetHomeDirectory() + ".Bisonte/MyApplication/Settings.prefs"
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Speichern von Preferences Crossplatform

Beitrag von Bisonte »

RSBasic hat geschrieben:

Code: Alles auswählen

GetHomeDirectory() + ".Bisonte/MyApplication/Settings.prefs"
Wobei ich jetzt davon ausgehe das .Bisonte zu ersetzen wäre mit : "." + UserName() ...

Code: Alles auswählen

GetHomeDirectory() + "." + Username() + "/MyApplication/Settings.prefs"
Sehe ich das so richtig ?

Wobei ich mich jetzt frage : Wie erstelle ich ein "verstecktes" Verzeichnis unter Linux ?

Anbei noch die Frage : Gibt es ein kostenloses MacOs, das ich mit einer VM nutzen kann ? Linux Distros gibt es ja zuhauf ;)
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
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Speichern von Preferences Crossplatform

Beitrag von RSBasic »

Bisonte hat geschrieben:Wobei ich jetzt davon ausgehe das .Bisonte zu ersetzen wäre mit : "." + UserName() ...

Code: Alles auswählen

GetHomeDirectory() + "." + Username() + "/MyApplication/Settings.prefs"
Sehe ich das so richtig ?
Nein. Du befindest dich bereits in deinem User-Verzeichnis. GetHomeDirectory() liefert genau den Pfad, den du brauchst. Der von mir im Beispiel eingebenene Nickname von dir "Bisonte" wäre dann stattdessen der Name deiner Entwicklungsschmiede. :D
Bisonte hat geschrieben:Wobei ich mich jetzt frage : Wie erstelle ich ein "verstecktes" Verzeichnis unter Linux ?
Einfach ein "." vor dem Namen deines Ordners setzen.
MyFolder = Ist kein verstecktes Verzeichnis
.MyFolder = Ist ein verstecktes Verzeichnis
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Speichern von Preferences Crossplatform

Beitrag von Bisonte »

Ah ok.... Danke für die erhellenden Worte.
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
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

Re: Speichern von Preferences Crossplatform

Beitrag von ts-soft »

Code: Alles auswählen

Procedure.s GetPrefsFile(AppName.s, FileName.s = "settings.prefs", Publisher.s = "ts-soft")
  Protected Path.s, slash.s
  
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      slash = "\"
      Path = GetEnvironmentVariable("APPDATA") + "\"
    CompilerDefault
      slash = "/"
      Path = GetHomeDirectory() + "."    
  CompilerEndSelect
  If Publisher
    Path + Publisher + slash
    If Not FileSize(Path) = - 2
      CreateDirectory(Path)
    EndIf
  EndIf
  Path + AppName + slash
  If Not FileSize(Path) = - 2
    CreateDirectory(Path)
  EndIf
  If FileSize(Path) = -2
    ProcedureReturn Path + FileName
  EndIf
EndProcedure
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
Antworten