Text- oder Konfigurationsdateien bearbeiten.

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Vultrax.

    Text- oder Konfigurationsdateien bearbeiten.

    Hallo

    Ich möchte einen kleinen Editor schreiben, der eine Konfigurationsdatei eines anderes Programmes einliest und verschiedene Werte in Steuerelemente auf der Form verteilt. (Wenn man halt "Laden" drückt)

    z.B. in einer Konfigurationsdatei, steht das:

    FrameLimit=60.000000
    SpeedLimit=22.000000
    Background_Picture=flowers.jpg
    UserBackground=False
    PlaySound=True

    So möchte ich das haben:


    Ich habe keine Ahnung wie das umsetzten kann ?( Könnt ihr mir helfen?
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Du liest jede Zeile ein, überprüfst, ob die Zeile z.B. mit PlaySound anfängt, fügst "PlaySound=" & TextBox.Text & vbCrLf in einen neuen String ein und schreibt diesen String mit WriteAllFile in die Datei.

    VB.NET-Quellcode

    1. Dim ToWrite As String = ""
    2. For Each line In IO.File.ReadAllLines("...")
    3. If line.StartsWith("Einstellungsname") Then
    4. ToWrite &= "Einstellungsname=" & TextBox.Text
    5. 'Oder: (Funkioniert nur, wenn jede Zeile ein = besitzt
    6. ToWrite &= line.Split("="c)(0) & "=" & TextBox.Text
    7. End If
    8. Next
    9. IO.File.WriteAllText("...", ToWrite)
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...

    Vultrax schrieb:

    So möchte ich das haben:
    Das sieht sehr nach INI-Format aus, da gibt es fertige Tools und Klassen.
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Public Declare Ansi Function GetPrivateProfileString _
    2. Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _
    3. (ByVal sectionName As String, _
    4. ByVal valueName As String, ByVal default As String, _
    5. ByVal retVal As System.Text.StringBuilder, _
    6. ByVal size As Integer, ByVal fileName As String) _
    7. As Integer
    Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die Dateien die ich bearbeiten will sind oft Dateien mit der Dateiendung *.cfg

    Das mit *.ini Dateien habe ich bereits, funktioniert soweit auch schon ganz gut, aber halt nicht so ganz bei den anderen Dateien.

    VB.NET-Quellcode

    1. Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
    2. 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
    3. Public Function INI_ReadValueFromFile(ByVal strSection As String, ByVal strKey As String, ByVal strDefault As String, ByVal strFile As String) As String
    4. Dim strTemp As String = Space(1024), lLength As Integer
    5. lLength = GetPrivateProfileString(strSection, strKey, strDefault, strTemp, strTemp.Length, strFile)
    6. Return (strTemp.Substring(0, lLength))
    7. End Function
    8. Public Function INI_WriteValueToFile(ByVal strSection As String, ByVal strKey As String, ByVal strValue As String, ByVal strFile As String) As Boolean
    9. Return (Not (WritePrivateProfileString(strSection, strKey, strValue, strFile) = 0))
    10. End Function
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford