Auslesen und Einstellen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Auslesen und Einstellen

    Hallo

    Ich würde gerne aus einer Datei, die in etwas so aussieht: (Beispielweise: Einstellungen.txt)

    Quellcode

    1. DirectX 0
    2. OpenGL 1
    3. Resolution 880
    4. Close 20


    Die Werte auslesen und die entsprechenden Steuerelemente damit verändern:


    oder so:

    Quellcode

    1. DirectX 1
    2. OpenGL 0
    3. Resolution 1240
    4. Close 50




    Ich hoffe, ihr könnt mir da weiterhelfen :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Hey,

    das sollte Dir doch inzwischen möglich sein. Ich mein, Du bist ja nicht mehr ganz neu in VB. Hast denn schon einen Ansatz?

    Wenn nein. Lies die Zeilen der Datei in ein Array. Gehe jede Zeile durch und splitte die Zeile am Leerzeichen. Index 0 enthält nun den Bezeichner (DirectX, OpenGL usw.). Hier prüfst Du nun auf den Inhalt und wandelst den Wert, der im Index 1 enthalten ist, entsprechend um (Boolean bei DirectX, OpenGL. Integer bei Resolution und Close). Letztendlich weißt Du den Steuerelementen den Wert zu. Fertig.

    Falls das nun komplexer wird, sprich Du möchtest die Werte auch wieder zurückschreiben, dann empfehle ich Dir, dass Du, auch bei so einer kleinen Sachen, mit DataBinding arbeitest. Lege Dir hierzu eine Klasse (z. B. Settings) an und binde die Properties an die Controls.

    Falls Du das Format der Datei selber wählen kannst, dann empfehle ich Dir, diese Daten in einer DataTable, innerhalb eines DataSets abzubilden.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Erstell Dir eine typisierte DataTable, pack da die Daten rein, schreib sie mit MyDataTable.WriteXml(PFAD) auf die Platte und lies sie mit MyDataTable.ReadXml(PFAD) wieder ein.
    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!
    Danke erstmal für die Antworten! :)

    Damit habe ich mich leider noch nicht auseinandergesetzt (auch noch kein Ansatz), deswegen bin ich da etwas hilflos bei der Sache.

    SpaceyX schrieb:


    Wie genau liest man Dateien in einen Array? Mit dem Splitten und zuteilen, sollte ich hinbekommen.


    RodFromGermany schrieb:


    So etwas? Das mit MyDataTable.WriteXml / ReadXml verstehe ich nicht so ganz (auch von der Funktion), ich möchte eigentlich keine Xml - Dateien schreiben sondern eher *.cfg, *.txt etc. lesen und schreiben.

    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Vultrax schrieb:

    ich möchte eigentlich keine Xml - Dateien schreiben
    Das macht .NET für Dich, Du musst Dich nur um eine ordentliche DataTable kümmern.
    Gib ihr die nötigen Spalten, gib den Spalten die richtigen Typen und (fast) feddich.
    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!
    kommt drauf an, ob es der Realität, die es modellieren soll, richtig entspricht.

    Noch sinnvollere Benamung (als DataTable1) wäre hilfreich - vlt. doch auch Erklärung, was das eiglich abbilden willst.

    Wies aussieht, ein Dingsbums v.a. mit zu-/weg-schaltbaren Rendering-Technologien.

    Dassis aber komisch, denn normalerweise muss man sich für eine Rendering-Technologie entscheiden, und kann nicht mehrere verschiedene zu-/weg-schalten.
    @Vultrax:: Wenn Du im Forum jemanden gezielt ansprechen willst, mach es so:
    @ Vultrax :, aber ohne Leerzeichen.
    Ich kann Der nicht sagen, ob das so richtig ist, aber es ist der richtige Weg.
    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!
    Nebenher:
    Wie Splitte ich richtig, um mir die Zahl anzeigen zu lassen die hinter dem Namen steht?

    Also:

    Quellcode

    1. DirectX 0
    2. OpenGL 1
    3. Resolution 880
    4. Close 20


    Quellcode

    1. 0
    2. 1
    3. 880
    4. 20


    Ich habe einiges versucht, allerdings bekomme ich nicht die Zahl raus .. (2. meiner Versuche)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim File As String = IO.File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Einstellungen.txt")
    3. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    4. Dim LineOfText As String
    5. Dim i As Integer
    6. Dim aryTextFile() As String
    7. LineOfText = File
    8. aryTextFile = LineOfText.Split(" ")
    9. For i = 0 To UBound(aryTextFile)
    10. MessageBox.Show(aryTextFile(i))
    11. Next i
    12. End Sub
    13. End Class


    oder ... :

    VB.NET-Quellcode

    1. MessageBox.Show(File.Split(" "c)(0))


    Aber ich bekomme nur das Wort, z.B. Update raus ..
    Wie geht das? ?(
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

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

    Vultrax schrieb:

    Wie geht das?
    Nimm den nächsten Index:

    VB.NET-Quellcode

    1. MessageBox.Show(File.Split(" "c)(1))
    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!
    @RodFromGermany

    Das hatte ich auch bereits versucht, allerdings bekomme ich das dabei raus:
    (Wenn das Bild nicht geht, im Anhang ist es nochmal)


    Ich habe zwar die Zahl, aber direkt darunter steht das nächste Wort, ich möchte aber nur die Zahl haben.
    Bilder
    • Wrong.JPG

      11,57 kB, 150×165, 231 mal angesehen
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

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

    Leerzeichen am Ende der Zahl in der Datei einfügen.

    oder du machst es so:

    VB.NET-Quellcode

    1. Using sr As New StreamReader("Pfad")
    2. Do While sr.Peek > 0
    3. Dim input() As String = sr.ReadLine.Split(" "c)
    4. For Each item In input
    5. MessageBox.Show(item)
    6. Next
    7. Loop
    8. End Using


    Dann gehts auch ohne extra Leerzeichen
    und so kriegst du nur die Zahlen:

    VB.NET-Quellcode

    1. Using sr As New StreamReader("Pfad")
    2. Do While sr.Peek > 0
    3. Dim input() As String = sr.ReadLine.Split(" "c)
    4. For item = 0 To input.Count - 1
    5. If Math.IEEERemainder(item, 2) <> 0 Then MessageBox.Show(input(item))
    6. Next
    7. Loop
    8. End Using


    bzw nur die Namen:

    VB.NET-Quellcode

    1. Using sr As New StreamReader("Pfad")
    2. Do While sr.Peek > 0
    3. Dim input() As String = sr.ReadLine.Split(" "c)
    4. For item = 0 To input.Count - 1 Step 2
    5. MessageBox.Show(input(item))
    6. Next
    7. Loop
    8. End Using

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „RushDen“ ()

    Vultrax schrieb:

    Das hatte ich auch bereits versucht
    aber nicht daran gedacht, einfach mal alle anzusehen.
    Wo bleibt Deine Eigeninitiative?
    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!

    Vultrax schrieb:

    Wie meinst du das?
    Wenn Du auf den Index 0 zugreifst und ich Dir sage, dass Du auf den Index 1 zugreifen möchtest, solltest Du allein auf die Idee kommen, Dir alle verfügbaren Indizes durchzuklickern.
    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!