1 1 1 1 1 1 1 1 1 1 Rating 4.71 (7 Votes)

Problemstellung:
Im Zeitalter überquellender Registrydateien ist es manchmal sinnvoll Optionen oder sonstige
Programmeinstellungen in einer INI-Datei zu speichern und von dort wieder einzulesen.
Aber wie geht das?

Voraussetzungen:
Das Bsp ist ab A00 lauffähig

Funktionsweise:
Eigentlich sind nur 2 API-Funktionen erforderlich.

1. Zum Lesen von INI- Einträgen:

Public Declare Function GetPrivateProfileString Lib _
  "KERNEL32" Alias "GetPrivateProfileStringA" _
  (ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, ByVal lpDefault As String, _
  ByVal lpReturnedString As String, ByVal nSize As Long, _
  ByVal lpFileName As String) As Long

Funktions Parameter:

lpApplicationName
Erwartet den Namen einer Sektion in einer Ini-Datei. Übergibt man hier ein "VBNullString"-Zeichen
so liefert die Funktion die Namen aller Sektionen.

lpKeyName
Erwartet einen Schlüssel dessen Eintrag gelesen werden soll. Übergibt man hier ein "VBNullString"-Zeichen und ist
"lpApplicationName" mit einer gültigen Sektion gefüllt so erhält man alle Schlüssel in der entsprechenden Sektion.

lpDefault
Erwartet eine Standardwert der Ausgegeben wird wenn die Ini-Datei, die Sektion oder der Schlüssel nicht Existiert.

lpReturnedString
Erwartete einen Puffer gefüllt mit Leerstellen der groß genug ist um die gefunden Daten zu Empfangen

nSize
Erwartet die Größe des Puffers in Bytes.

lpFileName
Erwartet die Pfadangabe zu der Existierenden Ini-Datei die ausgelesen werden soll.

Hilfsfunktion:

Public Function GetIniString(ByVal Sektion As String, _
                          ByVal Titel As String, ByVal Vorgabe As String, _
                          ByVal INIFile As String, _
                          Optional ByVal nSize As Long = 256) As String
  Dim sValue As String
  Dim lResult As Long
  sValue = Space$(nSize)
  lResult = GetPrivateProfileString(Sektion, Titel, _
                  Vorgabe, sValue, nSize, INIFile)
  GetIniString = Left$(sValue, lResult)
End Function

2. Zum Schreiben und Löschen von INI-Einträgen:

Public Declare Function WritePrivateProfileString Lib _
  "KERNEL32" Alias "WritePrivateProfileStringA" _
  (ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, ByVal lpString As Any, _
  ByVal lpFileName As String) As Long

 

Funktions Parameter:

lpApplicationName
Erwartet den Namen einer Sektion in einer Ini-Datei. Existiert dieser Bereits so wird der Schlüssel und der Wert in
dieser Sektion angelegt, andernfalls wird dieser erstellt. Übergibt man hier ein "VBNullString"-Zeichen so
löscht die Funktion alle Sektionen der Ini-Datei.

lpKeyName
Erwartet einen Schlüssel dessen Eintrag gelesen werden soll. Ist dieser schon vorhanden so wird der Wert dieses Schlüssels überschrieben.
Übergibt man hier ein "VBNullString"-Zeichen und ist "lpApplicationName" mit einer gültigen Sektion gefüllt so wird die
gesamte Sektion aus der Datei gelöscht.

lpString
Erwartet den Wert der in der Sektion unter dem Angegebenen Schlüssel gespeichert werden soll. Übergibt man hier ein
"VBNullString"-Zeichen so wird der Schlüssel aus der Ini-Datei gelöscht.

lpFileName
Erwartet eine Pfadangabe zu einer Ini-Datei. Existiert diese noch nicht so wird sie erstellt. Andernfalls können wohlmöglich Sektionen,
Schlüssel oder werte überschrieben werden.

Praktische Anwendung:

Der Rückgabewert ist immer ein String.
Soll es ein Zahl oder ein Datum sein muss dieser mit Typumwandlungsfunktionen wie CInt, CLng, CDate o.ä. umgewandelt werden.


Lesen eines INI-Eintrages:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Aus der Section „General“ soll der Schlüssel „SavePath“ gelesen werden
Dim sPath As String
sPath = GetIniString("General", "SavePath", "", "C:\Test\test.ini")


Löschen eines INI-Schlüssels:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Aus der Section „General“ soll der Schlüssel „SavePath“ gelöscht werden
WritePrivateProfileString  "General", "SavePath", vbNullString, "C:\Test\test.ini"

Löschen einer INI-Section:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Die  Section  „General“ soll gelöscht werden
WritePrivateProfileString  "General", vbNullString, "",  "C:\Test\test.ini"

Erstellen einer INI-Section mit Schlüssel und Wert:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Es soll die Section „GeneralPathAtt“ mit dem Schlüssel „AutoOpen“ und dem Wert „1“ erstellt werden
WritePrivateProfileString  "GeneralPathAtt", "AutoOpen", "1",  "C:\Test\test.ini"

Erstellen eines INI-Schlüssels und Wert in einer bestehenden Section:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Es soll der Schlüssel „PathAtt“ und dem Wert „F:\Eigene Dateien\Access\Access 2007“ in der Section „GeneralPathAtt“ erstellt werden
WritePrivateProfileString  "GeneralPathAtt", "PathAtt", "F:\Eigene Dateien\Access\Access 2007",  "C:\Test\test.ini"

Ändern eines bestehenden Wertes:
INI-Datei befindet sich im Verzeichnis C:\Test und heißt „test.ini“
Es soll der Schlüssel „PathAtt“ und dem Wert „F:\Eigene Dateien\Access\Access 2007“ in der Section „GeneralPathAtt“ geändert werden.
Neuer Wert „F:\Test\Access\Access 2007“
WritePrivateProfileString  "GeneralPathAtt", "PathAtt", "F:\Test\Access\Access 2007",  "C:\Test\test.ini"

In der Bsp-DB werden noch weitere Möglichkeiten gezeigt.
z.B.: Speichern von Formularpositionen oder Skins für das Formularlayout

Dateien:
(0 Stimmen)

Arbeiten mit INI-Dateien

ab A00

Die Zip-Datei enthält eine Version ab A00

 
Datum 05.02.2018
Dateigröße 55.73 KB
Download 1.904

Ähnliche Artikel