Einstellungen in eine INI Datei schreiben

de_Lupo

Grünschnabel
Hallo,

Bin ein Newbie :)

ich arbeite gerade an einem Programm, bei dem ich die Einstellungen des Programmes gerne in eine INI Datei schreiben würde.
Wie kann ich dies anstellen? Kann ich die *.ini benutzen wie ein normales AsciiFile?
Wie kann ich den Speicherort der ini.Datei einstellen?

Vielen Dank
Gruß de_Lupo :)
 
So kannst du zum Beispiel mittels der "Microsoft Scripting Runtime" in Dateien reinschreiben:
Code:
Private Sub Speichern()
    Dim fso As Scripting.FileSystemObject
    Set fso = New Scripting.FileSystemObject
    Dim tstDatei As TextStream
    
    Dim strDateiname As String
    strDateiname = "C:\Dateiname.ini"
    'Datei erstellen und zum Schreiben öffnen:
    Set tstDatei = fso.OpenTextFile(strDateiname, ForWriting, True)
    'HIER wird in die Datei reingeschrieben:
    tstDatei.WriteLine "Dein Text"
    tstDatei.WriteLine "Noch ein Text"
    'Datei wieder schließen:
    tstDatei.Close
End Sub

Hier noch Code zum Lesen der Datei:
Code:
Private Sub Laden()
    Dim fso As Scripting.FileSystemObject
    Set fso = New Scripting.FileSystemObject
    Dim tstDatei As TextStream
    
    Dim strDateiname As String
    strDateiname = "C:\Dateiname.ini"
    'Datei zum Lesen öffnen:
    Set tstDatei = fso.OpenTextFile(strDateiname, ForReading, False)
    'HIER wird der Inhalt der Datei ausgelesen:
    'Solange nicht das Dateiender erreicht ist, dann:
    While Not tstDatei.AtEndOfStream
        'Zeile für Zeile der Datei auslesen und was damit tun:
        'tstDatei.ReadLine gibt den Inhalt einer Zeile wieder:
        MsgBox tstDatei.ReadLine, , "Dateiinhalt"
    Next
    'Datei wieder schließen:
    tstDatei.Close
End Sub

Um deine Einstellungen zu speichern, überlegst du dir halt ein sinnvolles Muster, nach dem die Einstellungen reingeschrieben werden und dann wieder eindeutig gelesen werden können.
Ich mache das immer so:
Code:
        Dim strZeile As String
        strZeile = tstDatei.ReadLine
        Select Case Mid$(strZeile, 1, 1)
            Case "A"
                '-->Erste Buchstabe ist A, irgendwas tun
            Case "B"
                '-->Erste Buchstabe ist B, irgendwas anderes tun
        End Select
 
@Shakie

Das ist doch nicht dein Ernst oder ?

Wieso soll man dazu das FilesystemObjekt missbrauchen wenn
es was fertiges gibt ?
Wo sind bei dir die Sektionen ?

Es gibt fertige API's dazu:

Private Declare Function GetPrivateProfileStringA Lib "kernel32.dll" ( _
ByVal lpSection As String, _
ByVal lpSetting As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String _
) As Long
Private Declare Function WritePrivateProfileStringA Lib "kernel32.dll" ( _
ByVal lpSection As String, _
ByVal lpSetting As String, _
ByVal lpValue As String, _
ByVal lpFileName As String _
) As Long

Und das kann man wunderbar in Funktionen packen um
mit einem einfachen Aufruf INI's zu schreiben oder zu lesen.

SIEHE HIER:

http://vb-tec.de/inifile.htm
 
Hallo Shakie,

war auch nicht bös gemeint.
Ich weiß auch nicht alles.
Hier lernt glaub ich jeder hin und wieder
was dazu.
 

Neue Beiträge

Zurück