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.897

Ähnliche Artikel

You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png5.png7.png6.png1.png8.png5.png
Heute181
Gestern206
Diese Woche387
Dieser Monat4808
Total1576185

  • IP: 3.229.122.112
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

3
Online

19. März 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...