Anfängerfragen zum Programmieren mit PureBasic.
HoDam
Beiträge: 82 Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne
Beitrag
von HoDam » 25.05.2005 12:27
Die *ini -Datei die ich auslesen möchte steht grundsätzlich im Windowsverzeichnis.
Da dieses in Abhängigkeit vom OS (englisch, deutsch, andere Sprachen
bzw. der Installation verschiedene Bezeichungen haben kann, kann ich diesen Ort nicht fest programmieren.
Der Versuch über %systemroot% (windir) funktioniert bei mir nicht.
Beispiel:
Wie kann ich diese Datei ansprechen, unabhängig davon in welchem Arbeitsverzeichnis ich mich befinde
Danke
Danilo
-= Anfänger =-
Beiträge: 2284 Registriert: 29.08.2004 03:07
Beitrag
von Danilo » 25.05.2005 13:26
HoDam hat geschrieben: Der Versuch über %systemroot% (windir) funktioniert bei mir nicht.
Code: Alles auswählen
Procedure.s GetWinDir()
dir$ = Space(#MAX_PATH)
GetWindowsDirectory_(@dir$,#MAX_PATH)
ProcedureReturn dir$
EndProcedure
Procedure.s GetSysDir()
dir$ = Space(#MAX_PATH)
GetSystemDirectory_(@dir$,#MAX_PATH)
ProcedureReturn dir$
EndProcedure
Procedure.s GetSysVar(var$)
out$ = Space(1024)
GetEnvironmentVariable_(var$,out$,2048)
ProcedureReturn out$
EndProcedure
Debug GetWinDir()
Debug GetSysDir()
Debug GetSysVar("systemroot")
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
zigapeda
Beiträge: 1753 Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:
Beitrag
von zigapeda » 25.05.2005 13:32
Wenn wir gerade dabei sind wie kann man z.B. den ordner des benutzers rausfinden?
also bei mir z.B.
C:\Dokumente und einstellungen\zigapeda\Eigene Dateien
geht das auch mit einer Winapi oder geht das nur wenn man erst den Benutzernamen rausfindet und dann den pfad zusammenbaut?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping
Danilo
-= Anfänger =-
Beiträge: 2284 Registriert: 29.08.2004 03:07
Beitrag
von Danilo » 25.05.2005 14:08
zigapeda hat geschrieben: Wenn wir gerade dabei sind wie kann man z.B. den ordner des benutzers rausfinden?
also bei mir z.B.
C:\Dokumente und einstellungen\zigapeda\Eigene Dateien
Code: Alles auswählen
#CSIDL_MYMUSIC = $000d ;// "My Music" folder
#CSIDL_APPDATA = $001A ;// Application Data, new For NT4
#CSIDL_LOCAL_APPDATA = $001C ;// non roaming, user\Local Settings\Application Data
#CSIDL_INTERNET_CACHE = $0020
#CSIDL_COOKIES = $0021
#CSIDL_HISTORY = $0022
#CSIDL_COMMON_APPDATA = $0023 ;// All Users\Application Data
#CSIDL_WINDOWS = $0024 ;// GetWindowsDirectory()
#CSIDL_SYSTEM = $0025 ;// GetSystemDirectory()
#CSIDL_PROGRAM_FILES = $0026 ;// C:\Program Files
#CSIDL_MYPICTURES = $0027 ;// My Pictures, new For Win2K
#CSIDL_PROGRAM_FILES_COMMON = $002b ;// C:\Program Files\Common
#CSIDL_COMMON_DOCUMENTS = $002e ;// All Users\Documents
#CSIDL_RESOURCES = $0038 ;// %windir%\Resources\, For theme And other windows resources.
#CSIDL_RESOURCES_LOCALIZED = $0039 ;// %windir%\Resources\<LangID>, For theme And other windows specific resources.
#CSIDL_COMMON_ADMINTOOLS = $002f ;// All Users\Start Menu\Programs\Administrative Tools
#CSIDL_ADMINTOOLS = $0030 ;// <user name>\Start Menu\Programs\Administrative Tools
Procedure.s GetSpecialDir(dir)
lib = OpenLibrary(#PB_Any,"shell32.dll")
If lib
dir$ = Space(#MAX_PATH)
If CallFunction(lib,"SHGetFolderPathA",0,dir,0,0,@dir$)<>#S_OK
dir$=""
EndIf
CloseLibrary(lib)
EndIf
ProcedureReturn dir$
EndProcedure
Procedure.s GetUserDir()
#CSIDL_PERSONAL = $0005 ; My Documents
lib = OpenLibrary(#PB_Any,"shell32.dll")
If lib
dir$ = Space(#MAX_PATH)
If CallFunction(lib,"SHGetFolderPathA",0,#CSIDL_PERSONAL,0,0,@dir$)<>#S_OK
dir$=""
EndIf
CloseLibrary(lib)
EndIf
ProcedureReturn dir$
EndProcedure
Debug GetUserDir()
Debug "---"
Debug GetSpecialDir(#CSIDL_WINDOWS)
Debug GetSpecialDir(#CSIDL_SYSTEM)
Debug GetSpecialDir(#CSIDL_PROGRAM_FILES)
Debug GetSpecialDir(#CSIDL_APPDATA)
Debug GetSpecialDir(#CSIDL_LOCAL_APPDATA)
Debug GetSpecialDir(#CSIDL_INTERNET_CACHE)
Debug GetSpecialDir(#CSIDL_COOKIES)
Debug GetSpecialDir(#CSIDL_HISTORY)
Debug GetSpecialDir(#CSIDL_COMMON_APPDATA)
Debug GetSpecialDir(#CSIDL_MYPICTURES)
Debug GetSpecialDir(#CSIDL_PROGRAM_FILES_COMMON)
Debug GetSpecialDir(#CSIDL_COMMON_DOCUMENTS)
Debug GetSpecialDir(#CSIDL_RESOURCES)
Debug GetSpecialDir(#CSIDL_RESOURCES_LOCALIZED)
Debug GetSpecialDir(#CSIDL_COMMON_ADMINTOOLS)
Debug GetSpecialDir(#CSIDL_ADMINTOOLS)
Debug GetSpecialDir(#CSIDL_MYMUSIC)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
HoDam
Beiträge: 82 Registriert: 19.11.2004 13:57
Wohnort: Köln, Cologne
Beitrag
von HoDam » 25.05.2005 17:25
Danke Danilo
hat funktioniert