Zeilen aus einer INI-Datei einlesen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von TuSore.

    Zeilen aus einer INI-Datei einlesen

    Hallo!
    Ich habe mal wieder ein kleines Problem bezüglich des Lesens aus einer INI-Datei! Ich habe folgende INI-Datei:

    [Test]
    Alterwert1=
    Alterwert2=
    Alterwert3=
    DatumAlterwert1= bla bla
    DatumAlterwert2= bla bla

    Wenn ich nun versuche alle Einträge die ‚Alterwert‘ beinhalten zu ‚leeren‘, klappt das soweit gut! Allerdings werden nur die Einträge von Alterwert1-3 bearbeitet! Die letzten zwei Einträge Alterwert1-2 bleiben aber irgendwie unverändert was aber so nicht sein soll!

    Bei meiner Momentanen Programmierung werden aber alle Einträge eigentlich richtig eingelesen, zumindest kann man das anhand der ListBox-Einträge erkennen die ich mit der For Each schleife einlesen lasse!

    VB.NET-Quellcode

    1. Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias _ "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32
    2. Public Function INI_WriteValueToFile(ByVal strSection As String, ByVal strKey As String, ByVal strValue As String, ByVal strFile As String) As Boolean
    3. Return (Not (WritePrivateProfileString(strSection, strKey, strValue, strFile) = 0))
    4. End Function
    5. Dim GesuchterINIWert As String
    6. GesuchterINIWert = INI_ReadValueFromFile("Test", vbNullString, vbNullString, "c:\Berechnung.ini")
    7. Dim INIZeilen() As String
    8. INIZeilen = GesuchterINIWert.Split("")
    9. For Each GesuchterINIWert In INIZeilen
    10. ListBox1.Items.Add(GesuchterINIWert)
    11. If GesuchterINIWert Like "Alterwert*" Then
    12. INI_WriteValueToFile("Berechnungen ", GesuchterINIWert, "", "c:\Berechnung.ini")
    13. End If
    14. Next GesuchterINIWert


    Also mir qualmt der Kopf und komme irgendwie nicht dahinter wo hier das Problem liegen könnte! :wacko:
    Ich hoffe ihr könnt mir Helfen!!!

    Gruß
    TuSore

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TuSore“ ()

    Like "Alterwert*" matcht alle, die mit "Alterwert" anfangen, damit "Alterwert" irgendwo drin stehen kann, müsste der vergleich Like "*Alterwert*" sein.

    Der Titel ist übrigens nich gerade einfallsreich ;) Wenn dir was besseres einfällt, bitte ändern.
    Hi!

    Vielen Dank!
    Bin jetzt wieder ein ganzes stückchen weiter gekommen!
    Also die Einträge werden jetzt richtig bearbeitet, aber ich habe gerade irgendwie zufällig was anderes endeckt! Wenn ich anstelle von

    Alterwert1=
    Alterwert2=
    Alterwert3=
    DatumAlterwert1= bla bla
    DatumAlterwert2= bla bla

    folgendes einsätze

    Alterwert1=
    Alterwert2=
    Alterwert3=
    Alterwert1= bla bla
    Alterwert2= bla bla

    habe ich wieder das Problem das er mit die letzten zwei Einträge nicht bearbeitet! Klingt ein bisschen merkwürdig ich weiss, aber hier könnte man deshalb doch einen Benutzterfehler abfangen, wenn man sich z.B. verschrieben hat und zwei mal einen Eintrag mit der selben Nummerierung vergeben hat, das trotzdem alle entsprechenden Einträge abgearbeitet werden. Wenn ich die Nummerierung komplett weglasse, dann bearbeitet er mir nur die erste Zeile! Also wenn ich in der For Each Schleife sage:

    GesuchterINIWert Like "Alterwert*" Or GesuchterINIWert Like "*Alterwert*" Then ...

    sollte er mir doch alle Einträge finden und berabeiten egal was dahinter oder davor steht oder?


    PS: Was meinst du denn mit Titel der nicht gerade einfallsreich ist!

    Gruß
    TuSore

    Zeilen aus einer INI-Datei einlesen

    Hi!
    Ich habe nach langem herumprobieren, doch noch eine Lösung gefunden! :)

    Habe in der Zeile:

    INI_WriteValueToFile("Berechnungen ", GesuchterINIWert, "", "c:\Berechnung.ini")

    anstelle von "" ein vbNullString reingesetzt und jetzt funktioniert es bestens!

    Trotzdem Danke!

    Gruß
    TuSore