Kontakt
DSVGO
Ini-Dateien sind einfache Text-Dateien, welche auch heute noch gerne zur schnellen Programm-Konfiguration benutzt werden. Sie sind einerseits auch durch den Anwender leicht änderbar (etwa mit Notepad), andererseits bieten sie durch die 2-stufige Hierarchie rudimentäre Möglichkeiten, die Daten darin zu strukturieren.
Die hier vorgestellten Routinen ermöglichen den komfortablen Zugriff auf beliebige Ini-Dateien. Da wohl zu 99% die zur VB-Anwendung "zugehörige" Ini-Datei benutzt wird, kann in solchen Fällen auf die Angabe des Ini-Pfads verzichtet werden.
'Standard-Ini auslesen: s = IniRead("Bearbeiter", "Name")
'Standard-Ini mit Default auslesen: s = IniRead("Bearbeiter", "Name", "-unbekannt-")
'Standard-Ini schreiben: IniWrite "Bearbeiter", "Name", "Willi Wusel"
'beliebige Ini auslesen: s = IniRead("Form1", "PosX", IniFile:="D:\Test\Layout.ini")
Fügen Sie folgende Zeilen im Deklarationsteil (am Besten eines Standardmoduls) ein:
Private Declare Function GetPrivateProfileStringA Lib "kernel32.dll" ( _ ByVal lpSection As String, _ ByVal lpSetting As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String _ ) As Long Private Declare Function WritePrivateProfileStringA Lib "kernel32.dll" ( _ ByVal lpSection As String, _ ByVal lpSetting As String, _ ByVal lpValue As String, _ ByVal lpFileName As String _ ) As Long
Diese Funktion ermittelt den Pfad zur "Standard" Ini-Datei. Üblicherweise liegt diese Datei im EXE-Verzeichnis, hat den selben Namen wie die Anwendung mit der Dateiendung ".ini". Durch Nutzung einer statischen Variable muss der "Analysevorgang" nur beim ersten Aufruf durchgeführt werden.
' ©2003 by Jost Schwider, http://vb-tec.de/ Public Function IniPath() As String Static AppIniFile As String If Len(AppIniFile) = 0 Then If Right$(App.Path, 1) = "\" Then AppIniFile = App.Path & App.EXEName & ".ini" Else AppIniFile = App.Path & "\" & App.EXEName & ".ini" End If End If IniPath = AppIniFile End Function
Diese Funktion liest den Inhalt einer Ini-Datei aus (genauer: den Wert eines Keys in einer bestimmten Section). Optional können übergeben werden: ein Standardwert Default (wird zurück gegeben, falls kein korrespondierender Eintrag in der Ini-Datei existiert) und/oder der Pfad zu einem alternativen IniFile.
' ©2003 by Jost Schwider, http://vb-tec.de/ Public Function IniRead( _ ByRef Section As String, _ ByRef Key As String, _ Optional ByRef Default As String, _ Optional ByRef IniFile As String _ ) As String Dim s As String * 256 Dim n As Long If Len(IniFile) Then n = GetPrivateProfileStringA(Section, Key, Default, s, 255, IniFile) Else n = GetPrivateProfileStringA(Section, Key, Default, s, 255, IniPath) End If IniRead = Left$(s, n) End Function
Diese Prozedur schreibt in eine Ini-Datei (genauer: den Wert eines Keys in einer bestimmten Section). Optional kann übergeben werden: der Pfad zu einem alternativen IniFile. Bei Problemen (Ini-Datei kann nicht beschrieben werden) löst die Routine einen abfangbaren Fehler aus.
' ©2003 by Jost Schwider, http://vb-tec.de/ Public Sub IniWrite( _ ByRef Section As String, _ ByRef Key As String, _ ByRef Value As String, _ Optional ByRef IniFile As String) Dim n As Long If Len(IniFile) Then n = WritePrivateProfileStringA(Section, Key, Value, IniFile) Else n = WritePrivateProfileStringA(Section, Key, Value, IniPath) End If If n = 0 Then Err.Raise 5 'Invalid procedure call or argument End Sub
© Jost Schwider, 07.02.2003-07.02.2003 - http://vb-tec.de/inifile.htm