Code-Beispiel
		
Anwendungsdaten bzw. Home-Verzeichnis des Users (Windows, Linux)
| Lizenz: | Erster Autor: | Letzte Bearbeitung: | 
| k. A. |  Jojo |  09.12.2011 | 
Windows-Entwicklern wird empfohlen, veränderliche Programmdaten wie INI-Dateien im Order "Anwendungsdaten" des jeweiligen Nutzers abzulegen. Unter Linux verhält sich das ganz ähnlich: Programmeinstellungen werden in /home/Benutzername/ abgelegt. Wie kommt man an diese Pfade?
Der folgende Sourcecode sucht je nach Betriebssystem nach dem passenden Pfad. Unter Linux wird einfach die Umgebungsvariable $HOME benutzt, unter Windows muss leider ein wenig mehr Arbeit investiert werden, um verschiedene Windowsversionen zu unterstützen. Es werden nacheinander verschiedene Spezialordner durchprobiert, um den passenden zu finden. Die zu testenden Ordner kannst du selbst festlegen und vertauschen (falls du z.B. erst in "All Users" und dann erst im persönlichen Ordner nachschauen möchtest).
' Hier drin wird das ermittelte Verzeichnis stehen.
Dim homepath As String
#If Defined(__FB_WIN32__)
#Include Once "win/shlobj.bi"
If(Environ("APPDATA") <> "") Then
    ' Einfacher Fall: Umgebungsvariable gesetzt (neue Windows-Versionen)
    homepath = Environ("APPDATA")
Else
    ' Alte Windows-Versionen: Benutze Shell32.dll
    ' Username\AppData[\Roaming], My Documents und Documents and Settings\Username und All Users\AppData[\Roaming] werden in dieser Reihenfolge gesucht.
    Dim searchPaths(0 To 3) As Integer = {CSIDL_APPDATA, CSIDL_PERSONAL, CSIDL_PROFILE, CSIDL_COMMON_APPDATA}
    For i As Integer = LBound(searchPaths) To UBound(searchPaths)
        Dim idl As LPITEMIDLIST
        If(SHGetSpecialFolderLocation(0, searchPaths(i), @idl) = 0) Then
            Dim buffer As String * 512
            buffer = Space(512)
            If(SHGetPathFromIDList(idl, buffer)) Then
                homepath = Left(buffer, InStr(buffer, Chr(0)) - 1)
                Exit For
            EndIf
        End If
    Next
EndIf
#ElseIf Defined(__FB_LINUX__)
homepath = Environ("HOME")
#Else
#Error Plattform nicht unterstützt
#EndIf
Print "home-Verzeichnis: " & homepath
Sleep
Jetzt kannst du an diese Variable z.B. deinen Programmnamen dranhängen und dein eigenes Anwendungsverzeichnis erstellen, z.B.
if homepath = "" then homepath = "." ' kein pfad gesetzt
homepath &= "/.meintollesprogramm" ' Punkt vor dem Namen wird gern benutzt... Unter Linux :)
MkDir homepath
Mit wenigen Änderungen im Quelltext kannst du dir alle möglichen Spezialordner unter Windows anzeigen lassen. Beachte aber, dass nicht alle Ordner in allen Versionen vorhanden sind.
For i As Integer = 0 To 255
    Dim idl As LPITEMIDLIST
    If SHGetSpecialFolderLocation(0, i, @idl) = 0 Then
        Dim buffer As String * 512
        buffer = Space(512)
        If SHGetPathFromIDList(idl, buffer) Then
            buffer = Left(buffer, InStr(buffer, Chr(0)) - 1)
            Print Hex(i) & " = " & buffer
        EndIf
    End If
Next
		
		| Zusätzliche Informationen und Funktionen | 
|---|
		
			| 
					Das Code-Beispiel wurde am 20.12.2008 von  Jojo angelegt.Die aktuellste Version wurde am 09.12.2011 von  Jojo gespeichert. | 
 
 |