Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.02.2015, 15:43

[C++] Preference Directory?

Hi, vor einiger Zeit hatte ich mit SDL 2 gearbeitet. Da gab es folgende Funktion:

Zitat

Use this function to get the "pref dir". This is meant to be where the application can write personal files (Preferences and save games, etc.) that are specific to the application. This directory is unique per user and per application.

Im Moment arbeite ich nur noch mit SFML. Leider gibt es dort nichts vergleichbares und ich möchte nicht wegen einer Funktion versuchen SDL und SFML zu vermischen. Gibt es einen Cross-platform Weg um ein solches Verzeichnis zu ermitteln?

LG

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

25.02.2015, 16:01

Ich meine in boost gibt es sowas. Vielleicht wurde das aber auch schon in den C++ Standard überführt.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

3

25.02.2015, 16:03

Ich frage mich gerade das Gleiche. Unter Windows habe ich SHGetFolderPathW( NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE, NULL, 0, tempPfad); benutzt, was Dir C:\Users\<WinAccount>\AppData\Roaming\ zurückliefert. Dort kannst Du dann einen Pfad für Dein Programm anlegen und das benutzen.

Unter Linux... da forsche ich gerade.

[edit] Die SDL-Implementation scheint unter Linux ~/.local/share/<company>/≤gamename> zurückzugeben.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

4

25.02.2015, 16:14

Ich meine in boost gibt es sowas.

Verrätst du mir auch welcher Teil von Boost? :D Ich habe im Filesystem-Modul bisher nichts gefunden :S

Ich frage mich gerade das Gleiche. Unter Windows habe ich SHGetFolderPathW( NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE, NULL, 0, tempPfad); benutzt, was Dir C:\Users\<WinAccount>\AppData\Roaming\ zurückliefert. Dort kannst Du dann einen Pfad für Dein Programm anlegen und das benutzen.

Unter Linux... da forsche ich gerade.

[edit] Die SDL-Implementation scheint unter Linux ~/.local/share/<company>/≤gamename> zurückzugeben.

Naja für Linux könnte man das ja problemlos #ifdef-en.. aber bei Windows besteht noch das Problem, dass sich die User-Daten nicht zwangsläufig auf C: befinden müssen :S Oder macht das die besagte Funktion?

5

25.02.2015, 16:35

Diese Funktion gibt dir den Pfad zu dem Ordner zurück, in der 'Apps' ihre 'Data' speichern können. Alternativ geht auch 'getenv("appdata");'

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

6

25.02.2015, 17:09

Ja, das passt. Wie ich schrieb: Unter Windows gibt's Funktion(), was Dir "blabla" zurückliefert. Oder halt was anderes, je nach aktuellen Systemeinstellungen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

25.02.2015, 17:47

PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

8

25.02.2015, 17:55

Ok, danke :D Oder mit anderen Worten: "ifdef + std::getenv" :D

Tobiking

1x Rätselkönig

  • Private Nachricht senden

9

25.02.2015, 17:58

Für Desktop Linux wäre es vermutlich am schönsten auf die xgd-user-dirs Spec zu setzen und die entsprechenden Variablen zu nutzen ($XDG_DATA_HOME, $XDG_CONFIG_HOME)

10

25.02.2015, 18:39

Für Desktop Linux wäre es vermutlich am schönsten auf die xgd-user-dirs Spec zu setzen und die entsprechenden Variablen zu nutzen ($XDG_DATA_HOME, $XDG_CONFIG_HOME)

Also auf meinem Linux Desktop gibt's die schonmal nicht :D

Werbeanzeige