Seite 2 von 3

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:22
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.

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:39
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

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:41
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")

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:45
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

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:47
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:

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 20:50
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:

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 21:05
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:

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 21:05
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:

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 21:15
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:

Re: Ordner für Programsettings?

Verfasst: 01.04.2010 21:19
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...