*Gelöst - Ordner für Programsettings?

Für allgemeine Fragen zur Programmierung mit PureBasic.
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: Ordner für Programsettings?

Beitrag von ts-soft »

Little John hat geschrieben:
ts-soft hat geschrieben:aber für nur Windows lieber den MS-Standard verwenden.
Wieso das? Funktioniert GetHomeDirectory() unter Windows manchmal nicht korrekt?

Gruß, Little John
Ist ja nicht dasselbe wie APPDATA!

@al90
Ich weiß nicht, ab welcher Windows Version die Environmentvariable zur Verfügung steht.
Und MakeSureDirectoryPathExists_() gibts auf älteren Versionen nur Optional.
Desweiteren unterstützt das kein Unicode und sollte für aktuelle Projekte nutzlos sein.
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
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Ordner für Programsettings?

Beitrag von al90 »

ts-soft hat geschrieben:@al90
Ich weiß nicht, ab welcher Windows Version die Environmentvariable zur Verfügung steht.
Und MakeSureDirectoryPathExists_() gibts auf älteren Versionen nur Optional.
Desweiteren unterstützt das kein Unicode und sollte für aktuelle Projekte nutzlos sein.
Habs unter XP/Vista/7 getestet und läuft problemlos. Unter =<98 kann ich jetzt aber auch
nicht sagen obs geht, da ich es nicht mehr testen kann. Was die API betrifft, kann man
sich ja auch selbst was "Stricken". z.b. so:

Code: Alles auswählen

Procedure.l MakeDirectoryGroup(Dir$)

If Right(Dir$,1)<>"\" : Dir$+"\" : EndIf

If Mid(Dir$,2,2)=":\" And FileSize(Dir$)=-1
  c$=Left(Dir$,3)
  For i=4 To Len(Dir$)
    b$=Mid(Dir$,i,1)
    If b$<>"\"
      c$+b$
    Else
      c$+b$
      CreateDirectory(c$)
    EndIf
  Next
EndIf

x=FileSize(Dir$)
ProcedureReturn x

EndProcedure
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Ordner für Programsettings?

Beitrag von rolaf »

Also machen wir es so:

Code: Alles auswählen

Procedure.s DatenPfad(Firma.s, Programm.s)

  Protected DatenPfad.s

  DatenPfad = GetHomeDirectory()
  If Right(DatenPfad, 1) <> "\"
    DatenPfad + "\"
  EndIf

  DatenPfad + "Anwendungsdaten\"
  If FileSize(DatenPfad) <> - 2
    CreateDirectory(DatenPfad)
  EndIf

  DatenPfad + Firma + "\"
  If FileSize(DatenPfad) <> - 2
    CreateDirectory(DatenPfad)
  EndIf

  DatenPfad + Programm + "\"
  If FileSize(DatenPfad) <> - 2
    CreateDirectory(DatenPfad)
  EndIf

  ProcedureReturn DatenPfad

EndProcedure

Debug DatenPfad("DrFalos", "Spitzenprogramm")
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Little John

Re: Ordner für Programsettings?

Beitrag von Little John »

al90 hat geschrieben:Unter XP oder kleiner wird dann halt "C:\Programme\" benutzt, (Was i.d.R. auch klappen sollte)
Auch unter Windows XP sollte man besser %APPDATA% verwenden.
ts-soft hat geschrieben:
Little John hat geschrieben:
ts-soft hat geschrieben:aber für nur Windows lieber den MS-Standard verwenden.
Wieso das? Funktioniert GetHomeDirectory() unter Windows manchmal nicht korrekt?

Gruß, Little John
Ist ja nicht dasselbe wie APPDATA!
Ach so, ja stimmt. Jetzt hast Du mich ganz durcheinandergebracht. :D
Da GetHomeDirectory() nicht dasselbe ist wie %APPDATA%, würde ich es auch nicht für Cross-Plattform-Programme nehmen, um das Verzeichnis für Dateien mit Einstellungen zu bestimmen.

Gruß, Little John
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Ordner für Programsettings?

Beitrag von NicTheQuick »

Das Problem wird weiterhin sein, dass das nur für deutsche Windowssysteme geht.
Zum Glück muss ich mich hier mit sowas nicht rumkloppen. :wink:
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Ordner für Programsettings?

Beitrag von rolaf »

NicTheQuick hat geschrieben:Das Problem wird weiterhin sein, dass das nur für deutsche Windowssysteme geht.
Zum Glück muss ich mich hier mit sowas nicht rumkloppen. :wink:
Nö wieso, in anderssprachigen Windosen wird einfach der Ordner "Anwendungsdaten" im HomeDirectory erstellt - was ja nicht verboten ist. :mrgreen:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Ordner für Programsettings?

Beitrag von al90 »

Little John hat geschrieben:
al90 hat geschrieben:Unter XP oder kleiner wird dann halt "C:\Programme\" benutzt, (Was i.d.R. auch klappen sollte)
Auch unter Windows XP sollte man besser %APPDATA% verwenden.
Hast recht. Gerade mal XP angeworfen. %APPDATA% geht da auch. Dann kann man also bedenkenlos

If OSVersion()=>#PB_OS_Windows_Vista

durch

If OSVersion()=>#PB_OS_Windows_XP

ersetzen. :wink:
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: Ordner für Programsettings?

Beitrag von ts-soft »

Little John hat geschrieben: Ach so, ja stimmt. Jetzt hast Du mich ganz durcheinandergebracht. :D
Da GetHomeDirectory() nicht dasselbe ist wie %APPDATA%, würde ich es auch nicht für Cross-Plattform-Programme nehmen, um das Verzeichnis für Dateien mit Einstellungen zu bestimmen.

Gruß, Little John
Das machen ein paar andere Programme (meist MultiOS) auch, ich sehe da kein Problem,
Problematisch finde ich es eher, wenn jemand "Anwendungsdaten" da anhängt, weil so heißt der
Ordner nur auf dt. Systemen WinXP und kleiner. Vista und Co zeigen zwar Anwendungdaten an,
aber nur virtuell, der Ordner ist "AppData\Roaming".

Auch wenn heute der 1.04. ist, sind bisher nur meine beiden Lösungen akzeptabel, jedenfalls
für mich :wink:
Alles andere ist eher unprofessionelles gewurschtel :mrgreen:
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
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Ordner für Programsettings?

Beitrag von al90 »

ts-soft hat geschrieben: Auch wenn heute der 1.04. ist, sind bisher nur meine beiden Lösungen akzeptabel, jedenfalls
für mich :wink:
Alles andere ist eher unprofessionelles gewurschtel :mrgreen:
Ich verlasse mich da lieber auf Praktische Tests. Und wenn XP / Vista / 7 sagen das es geht,
dann mache ich es auch so. Nur so kann man sich sicher sein. :wink:
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Ordner für Programsettings?

Beitrag von rolaf »

ts-soft hat geschrieben:Problematisch finde ich es eher, wenn jemand "Anwendungsdaten" da anhängt, weil so heißt der
Ordner nur auf dt. Systemen WinXP und kleiner. Vista und Co zeigen zwar Anwendungdaten an,
aber nur virtuell, der Ordner ist "AppData\Roaming".

Auch wenn heute der 1.04. ist, sind bisher nur meine beiden Lösungen akzeptabel, jedenfalls
für mich :wink:
Alles andere ist eher unprofessionelles gewurschtel :mrgreen:
Als wenn ichs geahnt habe: Ruhig Bello! :mrgreen:
Alles was geht ist erlaubt...
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Antworten