Lesen von .txt Datei und trennen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 181 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    ErfinderDesRades schrieb:

    na, dann trenn sie doch.

    Getrennt habe ich es ja bereits nur wie gebe ich den Eintrag aus der .txt richtig aus wenn ich z.B. wie jetzt

    VB.NET-Quellcode

    1. TextBox_EQWCommand.Text = "$ci " + ComboBox_EQWItem.Text + ComboBox_EQWRarity.Text


    Verwende ich den Code so wie angegeben erhalte ich den ersten Eintrag der .txt ich möchte jedoch das der zweite Eintrag in die TextBox erscheint statt der erste.
    Habe es bereits mit

    VB.NET-Quellcode

    1. ComboBox_EQWItem.Items.Add(parts(1))

    probiert jedoch schreibt VS "parts" wurde nicht deklariert

    verstehe nicht wie ich in meinem weiteren Code den zweiten Eintrag der .txt in der TextBox ausgeben lassen soll
    oder wäre die Option statt einer .txt eine .csv in die ComboBox einzulesen und diese dann gezielter in der TextBox auszugeben besser?
    und evtl statt mehreren einzelnen CheckBoxen was anderes zu nehmen?

    Gibt es ein Buch für VB.NET und WinForms das wäre sehr interessant für mich, jedoch nur wenn im Buch auch die verschiedensten Funktionen erklärt werden und wie man diese evtl. benutzt.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „MrSKY“ ()

    Hallo MrSKY,
    Der Sinn dahinter ist wenn ich in der ComboBox den ersten Eintrag vor dem Komma auswähle soll der zweite Eintrag ausgegeben werden.


    Deklariere einfach am Anfang des Formulars eine List(Of Integer).
    Dann füllst du dort wo deine ComboBox gefüllt wird (also in der Schleife) auch deine Liste mit mit parts(1).
    Bei Listen kann man Inhalt über deren Indexierung abrufen.
    Z.B. mit MeineListe[0] würdest du auf das erste Element, mit dem Index 0, das in der Liste steht zugreifen.
    Hier kannst Du dir nun die Eigenschaft ComboBox.SelectedIndex zunutze machen, indem Du diese Eigenschaft als Index für Deine Liste verwendest.

    Edit:
    Bedenke dabei, das Funktioniert in dieser form nur wenn Du die ComboBox NICHT nach Namen Sortieren lässt!
    Solltest Du vorhaben die ComboBox nach namen zu Sortieren könntest Du auch eine Dictionary(Of String, Integer) oder eine List(Of KeyValuePair(Of String, Integer)) verwenden.
    Das Chaos beginnt mit komprimierter Ordnung (Steppenpferd 2019)

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

    Steppenpferd schrieb:

    Deklariere einfach am Anfang des Formulars eine List(Of Integer).

    Könntest du mir bitte das beschreiben da ich wirklich erst ganz neu angefangen habe mich mit dem programmieren zu beschäftigen. Was genau soll Deklariere heißen und was hat eine List(Of Integer) für eine Funktion bzw Funktionen?

    Steppenpferd schrieb:

    Z.B. mit MeineListe[0] würdest du auf das erste Element, mit dem Index 0, das in der Liste steht zugreifen.

    Gilt das für jede Zeile? Wenn ja wäre dann mit MeineListe[1] der Zugriff auf der zweite Element in der Zeile abrufbar?

    Achja und nein diese werden nicht nach Namen sortiert :)

    MrSKY schrieb:

    Wenn ja wäre dann mit MeineListe[1] der Zugriff auf der zweite Element in der Zeile abrufbar?
    Das solltest Du bereits in Post #3 verstanden haben.
    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 solltest Du dich erstmal ausgiebig mit dem "Deklarieren von Variablen" Beschäftigen.
    Denn ohne ein Grundverständnis dafür kannst Du beim Programmieren gar nix reißen.
    Das Thema kann man übrigens Prima per Google finden und es ist zudem gar nicht schwer zu Lernen ;)
    Das Chaos beginnt mit komprimierter Ordnung (Steppenpferd 2019)
    @MrSKY Dann schau vielleicht mal hier rein, da findest Du noch ein paar Anregungen und Fingerübungen:
    [Sammelthread] Programmieren, aber was? (Programmideen)
    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 schrieb:

    Anregungen und Fingerübungen:

    Das hilft mir leider etwas wenig weiter wenn ich meine "Fingerübung" bereits ausführe.
    Ich stecke fest und würde gerne weiter daran arbeiten und es nicht unterbrechen.

    Ich komme einfach nicht auf die Lösung habe nun so viel gegoogelt jedoch funktioniert es einfach nicht.
    Das auslesen der .txt, spliten und einlesen in die ComboBox funktioniert.
    Nur will ich das wenn ich etwas in der ComboBox auswähle der zweite Eintrag davon in die TextBox eingefügt wird.
    Dies ist mein aktuelles Problem welches ich erstmal lösen muss damit ich weiter machen kann.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MrSKY“ ()

    ErfinderDesRades schrieb:

    irgendetwas

    TextBox_EQACommand.Text = "$ci " + ComboBox_EQAItem.Text + ComboBox_EQARarity.Text

    Damit bekomme ich zumindest das in die TextBox reingeschrieben was ich in der ComboBox auswähle, jedoch erfolglos bis dato das ich den zweiten Eintrag statt den ersten dort eingetragen bekomme.

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

    MrSKY schrieb:

    das ich den zweiten Eintrag statt den ersten dort eingetragen bekomme.
    In dieser Zeile ist nix zu sehen, was aussieht, wie ein erster Teil. Da würde ich den Index (0) erwarten, und dann diesen durch (1) ersetzen.
    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 schrieb:

    Da würde ich den Index (0) erwarten, und dann diesen durch (1) ersetzen.

    Eben genau das ist mein Problem ich komme einfach nicht drauf wie ich auf dieses (0) und (1) komme dazu reichen meine Skills einfach nicht aus nicht mal nach stundenlangem googeln.
    ​TextBox_EQACommand.Text = "$ci " + ComboBox_EQAItem.Text

    Das ist der wichtige Teil, anstatt das ich das ausgewählte Element in die TextBox bekomme brauch ich eben den zweiten Eintrag davon.

    MrSKY schrieb:

    wie ich auf dieses (0) und (1) komme
    Das hatten wir doch oben bereits.

    VB.NET-Quellcode

    1. Dim txt = "0;1;2;3"
    2. Dim parts() = txt.Split(";"c)
    3. Label1.Text = parts(0)
    4. Label2.Text = parts(1)
    5. Label3.Text = parts(2)
    6. Label4.Text = parts(3)
    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!
    mit

    ErfinderDesRades schrieb:

    gibts Code dazu?
    meine ich nicht eine einzelne Zeile, die weissgottwo stehen könnte, sondern eine ganze Methode.
    Weil es kommt ja v.a. auf den zweiten Halbsatz an:

    ErfinderDesRades schrieb:

    ja, aber irgendetwas kannste doch schon einfügen, wenn in der Combo was ausgewählt wird, oder?
    das wollte ich sehen, wie es implementiert ist.

    ErfinderDesRades schrieb:

    das wollte ich sehen, wie es implementiert ist.


    VB.NET-Quellcode

    1. lines = System.IO.File.ReadAllLines("Adventurer Armour.txt")
    2. For Each line In lines
    3. Dim parts() = line.Split(","c)
    4. ComboBox_EQAItem.Items.Add(parts(0))
    5. TextBox_EQACCommand.Text = parts(1)
    6. Dim list As New List(Of String)
    7. Next


    Habe es eben so probiert jedoch passiert nichts in der TextBox.
    Zusätzlich mit:
    TextBox_EQACommand.Text = "$ci " + ComboBox_EQAItem.Text
    wird mir wenigstens der Text von der ComboBox in die TextBox geschrieben jedoch noch immer leider nur der erste Eintrag der .txt da ich es einfach nicht hinbekomme das mir der zweite Eintrag ausgegeben wird.

    Mein Hauptproblem ist ich verstehe nicht wie ich im Verlauf meines Codes auf den zweiten Eintrag der .txt zugreifen kann und dieses auch verwenden kann.
    Wie ich es mir vorstelle jedoch nicht umsetzen konnte wäre:
    TextBox_EQACommand.Text = "$ci " + ComboBox_EQAItem.AA2
    mit AA2 ist gemeint das der jeweilige zweite Eintrag des ausgewählten Eintrages in der ComboBox ausgegeben werden soll.

    Nochmal:
    Ich brauche den zweiten Eintrag als String oder Variable (Ich habe keine Ahnung wie sich das nennt) damit ich es in meinem Code werden kann.

    Edit:
    https://gyazo.com/8ae63f0a4b60de4ee150cff03d7093cc
    Hier ein Bild was ich meine bei Item wähle ich das Item aus welcher der erste Eintrag aus der .txt sein soll und bei Command soll mir der zweite Eintrag davon ausgegeben werden.

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

    Schmittmuthelm schrieb:

    alles gegeben was du brauchst.

    Nachdem ich nun sehr viel gegoogelt habe und mir diesen Post von RFG nochmal angesehen habe ergibt es einen Sinn jedoch verstehe ich nicht wie ich das umsetzen soll geschweige was abonnieren sein soll in diesem Zusammenhang.

    Edit:
    Habe herausgefunden was abonnieren sein soll in diesem Zusammenhang.
    Schau dir Post 8 von Rod an. Da ist ja sogar schon alles fertig.
    Deinen eigenen Dateinamen eingeben, die Controls entsprechend benennen und die beiden Events abonnieren.

    Wenn das aktuell noch zu schwer ist solltest du tatsächlich erst mal ein paar einfache Aufgaben aus dem verlinkten Sammelthread in Angriff nehmen.

    EDIT: Events abonnieren läuft glaub ich automatisch wenn die Controls ensprechend benannt sind. Sprich durch Handles ComboBox1.SelectedIndexChanged ist das Event abonniert, wenn die ComboBox ComboBox1 heißt. Kann mich aber auch irren, hab lange nichts in vb.Net gemacht
    Dann ist das Problem also gelöst?

    Zu meiner Frage (die zielt auch auf das SelectedIndexChanged-Event ab):
    Dein Code zeigt grade nicht, wie implementiert ist, dass etwas passiert, wenn in der Combo was ausgewählt wird.
    Dazu würde helfen, wenn du mal eine ganze Methode posten könntest.

    Aber jetzt ja nicht mehr wichtig, wo du dein Prob gelöst hast.

    ups - ja, post#8, ...