Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Kleine Helferlein

INI-Dateien auslesen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.RedakteurJojo 03.03.2010

So einfach ist es, unter Windows INI-Dateien zu lesen und zu schreiben...

#Define DefaultGroup Mid(Command(0), InstrRev(Command(0), "\") + 1) ' Standardgruppe, wenn kein Gruppenname übergeben wird. In diesem Beispiel entspricht sie dem Namen der EXE-Datei.

' INI-Einstellungen (Deklarationen können auch gerne durch ein einfaches #include "windows.bi" ersetzt werden)
Declare Function GetPrivateProfileStringB Lib "kernel32" Alias "GetPrivateProfileStringA" (Byval lpApplicationName As String, Byval lpKeyName As String, Byval lpDefault As String, Byval lpReturnedString As String, Byval nSize As Long, Byval lpFileName As String) As Long
Declare Function WritePrivateProfileStringB Lib "kernel32" Alias "WritePrivateProfileStringA" (Byval lpApplicationName As String, Byval lpKeyName As String, Byval lpString As String, Byval lpFileName As String) As Long

'Benötigte Funktionen
Function GetValue(Key As String, Default As String = "", Group As String = DefaultGroup, Filename As String = Command(0) + ".ini") As String
    Dim TmpRetStr As String * 1280
    Dim RetVal As Long
    RetVal = GetPrivateProfileStringB(Group, Key, Default & Chr(0), TmpRetStr, Len(TmpRetStr), Filename)
    Return Left(TmpRetStr, RetVal)
End Function

Sub SetValue(Key As String, Value As String, Group As String = DefaultGroup, Filename As String = Command(0) + ".ini")
    WritePrivateProfileStringB Group, Key, Value, Filename
End Sub

' Testwerte aus der Standard-Gruppe. Dazu muss in der INI-Datei eine Gruppe mit dem Namen der Exe-Datei (z.B. [MeinProgramm.exe]) existieren, bzw. diese wird durch SetValue direkt angelegt.
' Mit einer zuvor leeren INI-Datei sollte die Ausgabe also "Blau", "Rot" sein.
Print GetValue("Farbe", "Blau")
SetValue("Farbe", "Rot")
Print GetValue("Farbe")
SetValue("Farbe", "")

' Testwerte aus einer anderen Gruppe
SetValue("Farbe", "Andere Farbe", "UnterGruppe")
Print GetValue("Farbe", , "UnterGruppe")
Sleep


Die Funktion InstrRev ist erst ab FreeBasic Version 0.18.4b vorhanden. Ein Ersatz für ältere Versionen wurde bereits in einem anderen Artikel besprochen.


Addendum: Aufbau einer INI-Datei

Für all diejenigen, die noch nie so eine INI-Datei in freier Wildbahn gesehen haben, wird hier noch kurz der Aufbau von INI-Dateien angesprochen.
Eine INI-Datei kann so aussehen:

[Einstellungen]
Datei=Test.bmp
Player1=Jojo
Player2=FB

[Punkte]
s1=10000
s2=8000
s3=4000

Zeilen wie [Einstellungen] bezeichnet man als Gruppe (Group im Programm). Alle nachfolgenden Zeilen (bis zu einer weiteren Zeile mit eckigen Klammern) gehören zu dieser Gruppe.
Die nachfolgenden Zeile sind also Schlüssel (Key im Programm), die zu der Gruppe gehören.
Schlüssel haben einen Wert (Value), der letztendlich die Daten speichert.


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 10.06.2007 von RedakteurJojo angelegt.
  • Die aktuellste Version wurde am 03.03.2010 von RedakteurJojo gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen