INI Abschnitt schreiben
Einen Abschnitt in eine INI-Datei schreiben
Das Schreiben eines kompletten Abschnitts erfolgt anlog dem Lesen bzw. unter Berücksichtigung der dort vorgestellten Besonderheiten. Der gesamte Inhalt der zu speichernden Sektion muss in einen einzelnen String gepackt werden, wobei „als Zeilentrenner“ das Chr(0)-Zeichen dient. Der String selbst muss mit einem endenden Chr(0)-Zeichen abgeschlossen werden.
Achtung: das Schreiben eines kompletten Abschnitts löscht unweigerlich einen vorhandenen Abschnitt; es erfolgt weder eine Warnmeldung noch erfolgt ein „Abgleich“. Man sollte also entsprechend vorsichtig mit dieser Funktion umgehen.
Das Zusammenfassen eines Abschnitts in einen einzelnen String zum Speichern in eine INI-Datei stellt sich deutlich einfacher dar, als das Auslesen und Auswerten eines Abschnitts aus einer INI-Datei; Bsp.:
"Key 01=Testwert 01" & Chr(0) & _ "Key 04=Testwert 04" & Chr(0) & Chr(0)
Um einen Unterschied zu vorher festzustellen, ändern wir den Abschnittsinhalt für die Speicherung wie folgt ab:
[Section 01] Schlüssel 01=Das Schlüssel 02=ist Schlüssel 03=ein Schlüssel 04=Test
Eine entsprechende Wrapper-Routine erhält bereits den vorbereiteten String, so dass sich diese Routine recht einfach darstellt.
Die hierzu notwendige Funktion WritePrivateProfileSection besitzt folgende 3 Argumente:
| Argument | Bedeutung | Beispielwerte |
| lpAppName | Name der Sektion bzw. des Abschnitts | Section 01 |
| lpString | Die Abschnittsdaten | s.o. |
| lpFileName | Gültiger Pfad zur INI-Datei | C:\WINNT\Dummy.ini |
Der Rückgabewert der Funktion WritePrivateProfileSection ist bei Erfolg ungleich 0, sonst 0.
Beispiel:
' Section schreiben Public Function WriteMySection(ByVal sIniFilePath As String, _ ByVal sSection As String, _ ByVal sRecord As String, _ ByRef sError As String) As Boolean Dim lResult As Long 'API-Rückgabewert lResult = WritePrivateProfileSection(sSection, sRecord, sIniFilePath) WriteMySection = CBool(lResult <> 0) If Not WriteMySection And Err.LastDllError <> 0 Then sError = GetDllErrorDescription(Err.LastDllError) End If End Function
Als Test für die zuvor beschriebene Funktion dient folgende Routine:
Beispiel:
' Aufruf WriteMySection Sub INI_Sample() Dim sINIPath As String Dim sRecord As String Dim sError As String 'Pfad zum Windows-Ordner ermitteln sINIPath = API_GetWindowsDir() 'Backslash prüfen und ggf. hinzufügen If Right$(sINIPath, 1) <> "\" Then sINIPath = sINIPath & "\" 'Unseren INI-Dateinamen anfügen sINIPath = sINIPath & "Dummy.ini" 'Jetzt basteln wir den Abschnittsstring zusammen sRecord = "Schlüssel 1 = Das" & vbNullChar & _ "Schlüssel 2 = ist" & vbNullChar & _ "Schlüssel 3 = ein" & vbNullChar & _ "Schlüssel 4 = Test" & vbNullChar & vbNullChar If WriteMySection(sINIPath, "Section 01", sRecord, sError) = True Then MsgBox "OK" Else: MsgBox sError End If End Sub