config.cfg einlesen Ü,Ä usw Probleme...

  • VB.NET

Es gibt 42 Antworten in diesem Thema. Der letzte Beitrag () ist von lace.

    config.cfg einlesen Ü,Ä usw Probleme...

    Hallo Leute,

    ich bin gerade dabei eine config.cfg einzulesen. Hier mal ein Beispiel:

    Dim Zeile() As String = IO.File.ReadAllLines("config.cfg")
    Form1.downloadverzeichnis.Text = Zeile(3)

    So das einlesen und einfügen in die Textbox klappt super. Nur mit ü, ä, ß, usw. kommt der nicht klar.
    Wie kann ich das besser machen?

    MfG, lace
    was soll denn der scheiss? jetz hab ich aus meiner textdatei ca. 15 zeilen ausgelesen und bei zeile 35 kommt jetz folgender error:

    Form1.Intervall.Text = Zeile(35) <-- Der Index war außerhalb des Arraybereichs.


    was soll denn das???

    mfg, lace
    Da wird wohl Zeile nur von (0) bis (34) gehen, also 35 Stück Zeilen mit den Indizes 0 bis 34.
    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!
    Dann wärs gut, wenn du mal den Code und vielleicht den Inhalt der Datei posten könntest.

    MfG Tobi

    /Edit: Startpost gründlich lesen hilft -.-
    /Edit 2: Wär doch gut, wenn du ihn mal postest, da du ihn ja umgebaut hast :D, Ich bin grad nen bisschen verwirrt :D
    Der Fehler liegt möglicherweise daran, dass du "ReadAllText" genommen hast...
    nun könntest du ja ein Replace von Environment.NewLine benutzen und dass in ein Array fügen...also:

    VB.NET-Quellcode

    1. Dim file As String = IO.File.ReadAllText("file")
    2. Dim zeile() As String = Split(file, Environment.NewLine)


    Dann sollte das gehen

    VB.NET-Quellcode

    1. Dim Zeile() As String = IO.File.ReadAllLines("config.cfg", System.Text.Encoding.Default)
    2. Form1.downloadverzeichnis.Text = Zeile(3)
    3. If Zeile(6) = "True" Then
    4. Form1.unterordnermitpaketnameerstellen.Checked = True
    5. Else
    6. Form1.unterordnermitpaketnameerstellen.Checked = False
    7. End If
    8. Form1.maxanzgleichzeitig.Value = Zeile(9)
    9. Form1.deletefertiggestellt.Text = Zeile(12)
    10. Form1.wenndateivorhanden.Text = Zeile(15)
    11. If Zeile(18) = "True" Then
    12. Form1.downloadbeiprogrammstart.Checked = True
    13. Else
    14. Form1.downloadbeiprogrammstart.Checked = False
    15. End If
    16. Form1.pausengeschwin.Value = Zeile(21)
    17. 'If Zeile(32) = "True" Then
    18. 'Form1.grafischespeedmeter.Checked = True
    19. 'Else
    20. ' Form1.grafischespeedmeter.Checked = False
    21. 'End If
    22. 'Form1.Intervall.Text = Zeile(35)
    23. 'If Zeile(38) = "True" Then
    24. ' Form1.geschwanzeigen.Checked = True
    25. 'Else
    26. ' Form1.geschwanzeigen.Checked = False
    27. 'End If
    28. ' Form1.geschwindigkeitin.Text = Zeile(41)


    Alles was ich grün mit ' auskommandiert habe, liest er nicht mehr ein, auch wenn es ohne ' da steht!
    bis Zeile 22.
    die datei sieht folgendermaßen aus:

    Quellcode

    1. ### SpeedLoader Configuration File ###
    2. #Downloadverzeichnis
    3. C:\
    4. #Unterordner mit Paketname erstellen
    5. false
    6. #Max. Anzahl gleichzeitiger Downloads
    7. 1
    8. #Fertig gestellte Downloads aus Liste entfernen
    9. gar nicht
    10. #Wenn eine Datei bereits vorhanden ist
    11. Link überspringen
    12. #Downloaden sofort bei Programmstart beginnen
    13. false
    14. #Pausen - Geschwindigkeit in KB/s
    15. 10
    16. --- Neue Rubrik!
    17. #Sprache [Function disabled]
    18. Deutsch (Standard)
    19. #Style / Design [Function disabled]
    20. Standard Design
    21. #Grafische Anzeige aktivieren
    22. true
    23. #Intervall (in sek.)
    24. 60
    25. #Geschwindigkeit anzeigen
    26. true
    27. #Geschwindigkeit anzeigen in
    28. Automatisch


    Es liegt nicht an "---- Neue Rubrik!", das habe ich schon ausprobiert...
    cool! Ich denke ich werde die INI Variante nehmen, wobei ich ein paar Fragen dazu habe. Folgende Anleitung benutze ich:
    shadoware.de/vb/ini.html

    1. Wenn ich das hier Deklarieren will, sagt er mir "As Any" wird nicht unterstützt:

    VB.NET-Quellcode

    1. 'API-Funktionen deklarieren
    2. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As Any, ByVal lsString As Any, ByVal lplFilename As String) As Long
    3. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long


    2. Aus der INI-Datei liest man ja so:
    Variable = GetINISetting("C:\Datei.ini", "Gruppe", "Eintrag", "Vorgabe")

    kann mir mal jemand eine Beispiel INI hier hin schreiben, sodass ich die Variablen verstehe, also wo die hinmüssen.