Aktuelle Zeit: 03.04.2020 19:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 18:33 
Offline

Registriert: 29.08.2004 13:18
Es gibt zwar in PureBasic die Funktion um das Home-Verzeichnis zu bestimmen, aber unter Windows und Mac ist es nicht das Verzeichnis, wo man seine Programm-Einstellungen etc. unterbringen sollte.
Der Code basiert auf diesen Thread viewtopic.php?f=8&t=27741 ich hab es nur umformuliert

Nebenbei wird noch eine #Slash Konstante definiert, da ja dies auch OS-Abhängig ist. Ok, windows ist da toleranter und akzeptiert auch / :)

Code:
;    Description: Return the Program Data directory of os/user
;         Author: -
;           Date: 02-12-2015
;     PB-Version: 5.40
;             OS: Windows, Linux, Mac
;  English-Forum:
;   French-Forum:
;   German-Forum:
; -----------------------------------------------------------------------------
; based on this code: http://www.purebasic.fr/german/viewtopic.php?f=8&t=27741

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Windows
    #Slash = "\"
  CompilerCase #PB_OS_MacOS
    #Slash = "/"
  CompilerCase #PB_OS_Linux
    #Slash = "/"
CompilerEndSelect

Procedure.s GetProgramDataDirectory()
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      ProcedureReturn GetEnvironmentVariable("APPDATA") + "\"
    CompilerCase #PB_OS_MacOS
      ProcedureReturn GetHomeDirectory() + "Library/Application Support/"
    CompilerCase #PB_OS_Linux
      ProcedureReturn GetHomeDirectory() +"."
  CompilerEndSelect
EndProcedure

;-Example
CompilerIf #PB_Compiler_IsMainFile
  path$=GetProgramDataDirectory()
  Debug path$
  Debug FileSize(path$)
CompilerEndIf

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Zuletzt geändert von GPI am 02.12.2015 19:25, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 19:18 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Ich würde für Linux noch den "." miteinarbeiten, so:
Code:
    CompilerCase #PB_OS_Linux
      ProcedureReturn GetHomeDirectory() + "."

weil der ist für Linux immer erforderlich (versteckt das Verzeichnis) und macht die Funktion erst richtig nutzbar.

Gruß
Thomas

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 19:26 
Offline

Registriert: 29.08.2004 13:18
ok, ist zwar ein bischen unhübsch, macht aber sinn.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 20:48 
Offline
Benutzeravatar

Registriert: 25.05.2012 15:14
Wohnort: Berlin, Germany
Aber deine Slash-Konstante verwendest du nicht, oder bin ich blind?

_________________
Michael

PureBasic 5.60, Windows und macOS


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 20:56 
Offline

Registriert: 29.08.2004 13:18
thinkitsimple hat geschrieben:
Aber deine Slash-Konstante verwendest du nicht, oder bin ich blind?


Ist kein Beispiel dabei. Und der Code, der die Pfade abfragt ist systemabhängig. Da ist schon der passte Slash drin :) Die Konstante ist dafür gedacht, wenn man selbst irgendwelche Pfade zusammenbauen will.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 22:00 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
GPI hat geschrieben:
Die Konstante ist dafür gedacht, wenn man selbst irgendwelche Pfade zusammenbauen will.

Ja, das will man ja öfter mal. :-)

Allerdings nicht nur im Zusammenhang mit GetProgramDataDirectory(), sondern auch in anderen Situationen.
Deshalb finde ich es unlogisch, dass das hier in diesem Code enthalten ist, wenn es von GetProgramDataDirectory() gar nicht benutzt wird.

Im Übrigen würde ich das eher so schreiben:

Code:
CompilerSelect #PB_Compiler_OS
   CompilerCase #PB_OS_Windows
      #Slash = "\"
   CompilerDefault
      #Slash = "/"
CompilerEndSelect

_________________
Dieser Satz ist falsch.


Zuletzt geändert von Nino am 02.12.2015 23:04, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 22:50 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
@Nino
Wenn schon, dann bitte CompilerDefault :wink:

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 02.12.2015 23:05 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
ts-soft hat geschrieben:
Wenn schon, dann bitte CompilerDefault :wink:

Stimmt. :oops:

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 03.12.2015 10:07 
Offline

Registriert: 29.08.2004 13:18
Nino hat geschrieben:
Im Übrigen würde ich das eher so schreiben:

Code:
CompilerSelect #PB_Compiler_OS
   CompilerCase #PB_OS_Windows
      #Slash = "\"
   CompilerDefault
      #Slash = "/"
CompilerEndSelect


Ok, auch eine Möglichkeit :)

Das mit #Slash ist halt so eine Sache. Eigentlich müsste PB so eine Konstante mitliefern. Ich werd mal bei Gelegenheit einen Vorschlag machen. Genauso wie eigentlich diese Funktion hier essentiell wäre, neben einigen anderen Verzeichnissen, wie Eigene Dokumente, Eigene Bilder und Eigene Musik. Ab und zu möchte man als Programm doch auf diese Verzeichnisse zugreifen können (bspw. um Benutzerdefinierte Musik abspielen zu können oder irgendwelche Screenshots in richtigen Ordner abzulegen).

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Zuletzt geändert von GPI am 03.12.2015 10:19, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: GetProgramDataDirectory()
BeitragVerfasst: 03.12.2015 10:17 
Offline

Registriert: 21.11.2013 21:17
Wohnort: Schweiz
Windows kommt auch mit / gut klar ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye