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 unter A00-A07 lauffähig
unter A07 muss sich Bsp-DB in einen „Vertrauenswürdigen Standort“ befinden
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
Arbeiten mit INI-Dateien für A00-A07
Die Zip-Datei enthält eine Version ab A00
|
Erstellt am Dateigröße Downloads |
05.01.2008 55.73 KB 1022 |
| |
MS-Access Datei & System Seite: 1
Seite: 2
| Datum | Klicks |
|---|
| Total | 3210 | | Mi. 23 | 3 | | Di. 22 | 3 | | Mo. 21 | 2 | | So. 20 | 3 | | Fr. 18 | 4 | | Do. 17 | 2 | | Mi. 16 | 2 |
|