.ini Datei auslesen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von klose010.

    .ini Datei auslesen

    Ich habe eine ini Datei deren Eigenschaften und Werte immer gleich sind. Lediglich die Attribute sind immer unterschiedlich. Jetzt möchte ich aber nur die Attribute auslesen und diese in den textboxen bzw Comboboxen meine Form bringen. Wie kann ich das am besten Realisieren? Und die Attribute sollen dann im Programm veränderbar sein und man soll es dann Speichern könnne. Tipps und Anregungen erwünscht :D

    Hier so mein ich das :) :
    [Eigenschaft]
    Wert = Attribut

    MfG

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

    VB.NET-Quellcode

    1. Dim file_stream As System.IO.StreamReader = New System.IO.StreamReader("C:\Datei.ini")
    2. Dim inhalt As String = file_stream.ReadToEnd()
    3. Dim anfang_des_attributs As Integer = InStr(inhalt, "Wert ") + 7
    4. Dim ende_des_werts As Integer = InStr(anfang_des_attributs, inhalt, vbNewLine)
    5. Dim länge_des_werts As Integer = ende_des_werts - anfang_des_attributs
    6. Dim Wert As String = Mid(inhalt, anfang_des_attributs, länge_des_werts)
    7. MsgBox(Wert)


    Dieser Code besit sich jetzt direkt auf dein Beispiel also in meiner Testdatei stand genau das was du oben gepostet hattest.

    Anmerkung: + 7 musst du immer dem Wert anpassen. Wenn da jetzt nicht Wert sonder Farbe steht müsste es +8 heißen z.B.
    hi,

    ich hab das bei mir so gelöst:

    Quellcode

    1. Module ini
    2. Public Declare Ansi Function GetPrivateProfileString _
    3. Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _
    4. (ByVal lpApplicationName As String, _
    5. ByVal lpKeyName As String, ByVal lpDefault As String, _
    6. ByVal lpReturnedString As String, _
    7. ByVal nSize As Integer, ByVal lpFileName As String) _
    8. As Integer
    9. Public Declare Ansi Function WritePrivateProfileString _
    10. Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _
    11. (ByVal lpApplicationName As String, _
    12. ByVal lpKeyName As String, ByVal lpString As String, _
    13. ByVal lpFileName As String) As Integer
    14. Public Function GetIniSetting(ByVal strKey As String, Optional ByVal strSection As String = "settings") As String
    15. Dim strValue As String
    16. Dim intPos As Integer
    17. On Error GoTo ErrTrap
    18. 'exe pfad ermitteln
    19. Dim sAppPath As String
    20. sAppPath = Application.StartupPath
    21. strValue = Space(1024)
    22. GetPrivateProfileString(strSection, strKey, "NOT_FOUND", strValue, 1024, sAppPath & "\clientadmintool.ini")
    23. Do While InStrRev(strValue, " ") = Len(strValue)
    24. strValue = Mid(strValue, 1, Len(strValue) - 1)
    25. Loop
    26. ' to remove a special chr in the last place
    27. strValue = Mid(strValue, 1, Len(strValue) - 1)
    28. GetIniSetting = strValue
    29. ErrTrap:
    30. If Err.Number <> 0 Then
    31. Err.Raise(Err.Number, , "Error form Fucntions.GetIniSettings " & Err.Description)
    32. End If
    33. End Function
    34. Public Sub SetIniSettings(ByVal strKey As String, ByVal strValue As String, Optional ByVal strSection As String = "settings")
    35. Dim intPos As Integer
    36. On Error GoTo ErrTrap
    37. Dim sAppPath As String
    38. sAppPath = Application.StartupPath
    39. WritePrivateProfileString(strSection, strKey, strValue, sAppPath & "\clientadmintool.ini")
    40. ErrTrap:
    41. If Err.Number <> 0 Then Err.Raise(Err.Number, , "Error form Functions.SetIniSettings " & Err.Description)
    42. End Sub
    43. End Module


    und so rufst du die funktionen auf:

    GetIniSetting("key", "kategorie")

    SetIniSettings("key","wert", "kategoriet")

    Flipez schrieb:

    Und wenn ich jetzt den nächsten Wert haben möchte muss ich die Zahl 7 verändern?


    Dort

    VB.NET-Quellcode

    1. Dim anfang_des_attributs As Integer = InStr(inhalt, "Wert ") + 7


    Musst du "Wert " verändern, und zwar so wie das nächste feld heißt. Die 7 musst du dann anpassen, wenn die Länge des Feldnamen sich verändert. Immer so viele buchstaben wie der Feldname ist + 3 rechnen.