RSS
StartseiteKnowledge LibraryTop 10Impressum

10.9 Wie greife ich auf INI-Dateien zu?

VB4-VB6

Von:  [Home]

INI-Dateien (Initialisierungsdateien) wurden vom Betriebssystem Windows 3.1x und von Programmen verwendet, die unter Windows 3.1x laufen, um Daten abzuspeichern und ggf. wieder auszulesen.

Ab Windows 95 sind keine INI-Dateien mehr nötig, die Windows-Registrierung löst diese ab. Trotzdem verwenden noch einige Programme und sogar Windows noch diese INI- Dateien, da sie besser überschaubar und besser editierbar sind, als Einträge in der Windows-Registrierung.

Um auf Werte aus INI-Dateien zu lesen, oder eigene INI-Dateien zu verwenden und Werte darin zu speichern, sind mehrere API-Aufrufe nötig. Hier zuerst die Deklarationen und vereinfachende Methoden:

' Modul "modIniAccess.bas":
Option Explicit

' lesender Zugriff:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
       "GetPrivateProfileStringA" (ByVal lpAppName As String, _
        ByVal lpszKeyName As String, ByVal lpszDefault As String, _
        ByVal lpszReturnedString As String, ByVal nSize As Long, _
        ByVal lpszFileName As String) As Long

' schreibender Zugriff:
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
       "WritePrivateProfileStringA" (ByVal lpAppName As String, _
        ByVal lpKeyName As String, ByVal lpString As String, _
        ByVal lplFileName As String) As Long

Public Function GetIniValue(ByVal Section As String, _
                            ByVal Key As String, _
                            ByVal FileName As String, _
                   Optional ByVal Default As String _
                            ) As String
  Dim sKeyValue As String
  Dim lChars    As Long
  
  sKeyValue = String$(128, 0)
  lChars = GetPrivateProfileString(Section, Key, Default, sKeyValue, 127, FileName)
  
  If lChars > 1 Then
    sKeyValue = Left$(sKeyValue, lChars)
  End If
  
  GetIniValue = sKeyValue
End Function

Public Function WriteIniValue(ByVal Section As String, _
                              ByVal Key As String, _
                              ByVal Value As String, _
                              ByVal FileName As String _
                              ) As Boolean
  WriteIniValue = CBool(WritePrivateProfileString(Section, Key, Value, FileName))
End Function

Public Sub DeleteIniKey(ByVal Section As String, _
                        ByVal Key As String, _
                        ByVal FileName As String)
  WritePrivateProfileString Section, Key, vbNullString, FileName
End Sub

Public Sub DeleteIniSection(ByVal Section As String, _
                            ByVal FileName As String)
  WritePrivateProfileString Section, vbNullString, vbNullString, FileName
End Sub

Sobald sich dieser Code in einem Modul Ihres Projekt befindet, haben sie mittels einfachen Befehlsaufrufen die Möglichkeit auf INI-Dateien zuzugreifen. Hier einige Beispiele der Syntax (Schreibweise):

Wert auslesen:
Variable = GetIniValue([Abschnitt], [Zeichenfolge], [Datei])

Wert schreiben:
WriteIniValue [Abschnitt], [Zeichenfolge], [Wert], [Datei]

INI-Abschnitt löschen:
DeleteIniSection [Abschnitt], [Datei]

Zeichenfolge mit Wert löschen:
DeleteIniKey [Abschnitt], [Zeichenfolge], [Datei]

Sie erkennen schon, dass diese Aufrufe recht simpel sind. Die Zeichen [] stehen nicht für eine optionale Angabe der Parameter, sondern stehen hier als Platzhalter.

Links zum Thema