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.

    Nä, das ergibt überhaupt keinen Sinn. In Zeile#3 schreibst Du Return. Wenn diese Zeile erreicht wird, weil eine der Bedingungen zutrifft, dann bricht der Compiler die Methodenbearbeitung ab und verlässt sie. Das ist zwar richtig. Aber darunter als Folgeanweisung zu schreiben, wie CommandText zusammengebaut werden soll, ist absolut widersinnig. Diese Zeilen werden niemals erreicht, weil eben der Compiler vorher schon die Methode verlässt. Schau nochmal meinen Methodenvorschlag an und erkenne den relevanten Unterschied. Kleiner Hinweis: Ich habe keinen If … End If Block, sondern eine If-Befehlszeile, die mit einem Then Return endet.

    ##########

    Ok, Du hast den Fehler erkannt. Aber was meinst Du mit TextBoxen durchklicken? Welche TextBoxen?

    Ehh … Du musst die Methode CreateNewCommandText schon auch aufrufen, damit der Compiler da was macht. Aber das hatte wir ja schon vor gefühlten 20 Posts, dass Du diese Methode in den CheckedChanged-EventHandlern der RadioButtons und SelectedIndexChanged-EventHandler der ComboBoxen aufrufen musst. :S
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ou ich meine natürlich die ComboBoxen durch klicke ...
    Schon langsam blicke ich wirklich gaaar nicht mehr durch :D

    CreateNewCommandText wo das hin muss ist mir bewusst mittlerweile nur was genau soll da rein damit dieser mit dem eben von dir genannten Code funktioniert?
    Hä? Die CreateNewCommandText-Methode ist doch fertig. Haste doch selber gepostet. Die muss nur aufgerufen werden. Was ist jetzt das Problem? Der Aufruf? Steht in Post#84.
    Wenn Du was anderes meinst, erklär es bitte ausführlich oder poste den gesamten Code der Form1-Klasse. Sonst weiß ich echt nicht mehr, wie ich helfen kann.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Post#84.

    Ach meine Güte jetzt hab ichs.
    Habe nur ein kleines Problem die .txt wird in die ComboBoxItem eingelesen jedoch gibt diese nichts aus in die TextBox, vorher ging das ja.

    VB.NET-Quellcode

    1. 'Make EQAAdventurer "Public" to use
    2. Private ReadOnly EQAAdventurer As New List(Of String)
    3. Private Sub GunaRadioButton_EQAAdventurer_CheckedChanged(sender As Object, e As EventArgs) Handles GunaRadioButton_EQAAdventurer.CheckedChanged
    4. 'Read File & Split EQAAdventurer
    5. Dim lines() = System.IO.File.ReadAllLines("Ring.txt")
    6. EQAAdventurer.Clear()
    7. ComboBox_EQAItem.Items.Clear()
    8. TextBox_EQACommand.Clear()
    9. For Each line In lines
    10. Dim parts() = line.Split(","c)
    11. ComboBox_EQAItem.Items.Add(parts(0))
    12. EQAAdventurer.Add(parts(1))
    13. Next
    14. ComboBox_EQAItem.SelectedIndex = -1
    15. '<<<------>>>
    16. CreateNewCommandText()
    17. End Sub
    18. Private Sub ComboBox_EQAItem_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_EQAItem.SelectedIndexChanged
    19. 'Get Entry EQAAdventurer from ComboBox and write in TextBox
    20. If (ComboBox_EQAItem.SelectedIndex >= EQAAdventurer.Count) Then
    21. Return
    22. End If
    23. '<<<------>>>
    24. CreateNewCommandText()
    25. End Sub

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

    Kannst Du mal bitte das Projekt ohne bin-, obj-, .vs- und .git-Ordner und gezippt über [+ Erweiterte Antwort] hochladen? Vielleicht finden wir so das Problem und eine Lösung.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Tja, dann musst Du eben Haltepunkte setzen und selber debuggen. Einen Haltepunkt da setzen, wo Du erwartest, dass der Compiler beim Programmablauf vorbei kommt und dann durch Starten und Benutzen des Programmes prüfen, ob Deine Annahmen bzgl. des Programmablaufs/der Codebearbeitung zutreffen.

    Ich seh jetzt erstmal nur: Wenn der Adventurer angeklickt wird, wird die Datei geladen und die Item-ComboBox anscheinend befüllt. Die anderen ComboBoxen vermutlich sind schon befüllt. Es wird nix (also wieder nixnix) in der ItemComboBox vom Programm ausgewählt (SelectedIndex wird auf -1 gesetzt). Wenn was in der ItemComboBox ausgewählt wird, wird eine Prüfung gemacht (da ist z.B. der Ansatz, ob die Prüfung plausibel ist) und dann die CreateNewCommandText-Sub aufgerufen. Damit könntest Du in Zeile#27 nen Haltepunkt setzen und so prüfen, ob die Methode an dieser Stelle wirklich aufgerufen wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    schaust Du hier: Debuggen, Fehler finden und beseitigen

    Sowas ist beim Prüfen gemeint:


    Mit Deinem Rückgabewert kann ich überhaupt nix anfangen. Ist ohne Kontext nicht bewertbar.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ok, jetzt weißt Du schon mal, dass der Compiler die Methode aufrufen wird. Dann ist der nächste Schritt: Haltepunkt in die CreateNewCommandText-Methode setzen, und zwar bei TextBox_CommandA.Text = CommandText. Wenn der Compiler dort ankommt, ist das ein gutes Zeichen. Dann kannst Du prüfen, was in CommandText drinsteht und ob das korrekt ist.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Dann musst Du dieses Item eben noch in den CommandText einbauen. Das wird ja unverändert übernommen, oder? Ach Moment, nee, das ist irgend ne Kennziffer. Also "Der Eine Ring" hat die Nummer 666 oder sowas, richtig? Wo sind diese Wertpaare hinterlegt? Ist das das, was aus der Datei eingelesen wird? Also die Itemnamen in der ItemComboBox und die Kennzahlen in EQAAdventurer? Dann musst Du also nur CommandText aus dem Spielerrollen-Command, dem EQAAdventurer(ComboBox_EQAItem.SelectedIndex) und jenem Rest zusammensetzen, den ich in Post#97 aus den anderen beiden ComboBoxen zusammengeschustert habe.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    ItemComboBox und die Kennzahlen in EQAAdventurer

    Nein je nachdem welchen RadioButton man auswählt wird die richtige .txt in die CBItems eingelesen.
    Der erste Eintrag bis zum Beistrich wird in die CBItems eingelesen und je nachdem was man da auswählt wie z.b. "Der Ring" erhält man in der TextBox nach dem "$ci" den zweiten Eintrag der .txt danach kommt erst Rarity und Upgrade.

    VB.NET-Quellcode

    1. Private Sub CreateNewCommandText()
    2. If Not GunaRadioButton_EQAAdventurer.Checked AndAlso Not GunaRadioButton_EQASwordsman.Checked AndAlso Not GunaRadioButton_EQAArcher.Checked AndAlso Not GunaRadioButton_EQAMage.Checked AndAlso Not GunaRadioButton_EQAMartialArtist.Checked OrElse ComboBox_EQAItem.SelectedIndex = -1 OrElse ComboBox_EQARarity.SelectedIndex = -1 OrElse ComboBox_EQAUpgrade.SelectedIndex = -1 Then Return
    3. Dim CommandText = "$ci " + EQAAdventurer(ComboBox_EQAItem.SelectedIndex)
    4. If ComboBox_EQARarity.SelectedItem.ToString <> "0" Then
    5. CommandText &= " " & ComboBox_EQARarity.SelectedItem.ToString
    6. If ComboBox_EQAUpgrade.SelectedItem.ToString <> "0" Then CommandText &= " " & ComboBox_EQAUpgrade.SelectedItem.ToString
    7. ElseIf ComboBox_EQAUpgrade.SelectedItem.ToString <> "0" Then
    8. CommandText &= " 0 " & ComboBox_EQAUpgrade.SelectedItem.ToString
    9. End If
    10. TextBox_EQACommand.Text = CommandText
    11. End Sub


    Hab das nun ​EQAAdventurer(ComboBox_EQAItem.SelectedIndex) hinzugefügt und es klappt nun jedoch erst wenn man etwas in Rarity und Upgrade ausgewählt hat das sollte davor auch gehen also sobald man was in der CBItems auswählt soll schon in der TextBox "$ci 666" z.B. kommen wie das anfangs war.

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

    Dann musst Du - aber das sollte offensichtlich sein - die CreateNewCommandText eben auch im ComboBox_EQAItem_SelectedIndexChanged-EventHandler aufrufen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    ComboBox_EQAItem_SelectedIndexChanged-EventHandler

    Hab ich doch

    VB.NET-Quellcode

    1. ​Private Sub ComboBox_EQAItem_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_EQAItem.SelectedIndexChanged
    2. 'Get Entry EQAAdventurer from ComboBox and write in TextBox
    3. If (ComboBox_EQAItem.SelectedIndex >= EQAAdventurer.Count) Then
    4. Return
    5. End If
    6. '<<<------>>>
    7. CreateNewCommandText()
    8. End Sub
    Und der Compiler kommt in der Zeile#8 vorbei, wenn die Items geladen sind, Du in Rarity und Upgrade was auswählst und dann das Item änderst? Zu prüfen mit einem Haltepunkt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich blick's grad nicht, weil's widersprüchlich ist, was Du schreibst:

    MrSKY schrieb:

    Hab das nun EQAAdventurer(ComboBox_EQAItem.SelectedIndex) hinzugefügt und es klappt nun jedoch erst wenn man etwas in Rarity und Upgrade ausgewählt hat das sollte davor auch gehen also sobald man was in der CBItems auswählt soll schon in der TextBox "$ci 666" z.B. kommen wie das anfangs war.

    MrSKY schrieb:

    Wie gesagt das einzige was bleibt das CBItem direkt in die TextBox ausgegeben wird bevor man überhaupt Rarity und Upgrade ausgewählt hat
    Soll ein CommandText entstehen, wenn bei Rarity und Upgrade nix gewählt wurde oder nicht? Die beiden Zitate widersprechen sich da m.E. und daher weiß ich nicht, was das Sollziel ist.

    Und bittebittebitte. Verwende Punkt und Komma. Oder Zeilentrennung. Allein

    MrSKY schrieb:

    Hab das nun EQAAdventurer(ComboBox_EQAItem.SelectedIndex) hinzugefügt und es klappt nun jedoch erst wenn man etwas in Rarity und Upgrade ausgewählt hat das sollte davor auch gehen also sobald man was in der CBItems auswählt soll schon in der TextBox "$ci 666" z.B. kommen wie das anfangs war.
    ist sooo anstrengend zu lesen, weil man die Satzeinheiten nicht erkennt. Das schadet dem Verständnis extrem. Und am Ende führt sowas zu inhaltlichen Missverständnissen und somit evtl. zu falschen Lösungsansätzen/-vorschlägen. Dass meine Texte manchmal ne Katastrophe, da gerne verschachtelt sind, ist mir bewusst, ich bin also auch nicht gerade ein Dauervorbild.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Soll ein CommandText entstehen, wenn bei Rarity und Upgrade nix gewählt wurde oder nicht?

    So wie es jetzt ist passt es mit Rarity und Upgrade.
    Wie gesagt sobald man einen RadioButton anklickt soll die jeweilige .txt in die CBItems eingelesen werden.
    Sobald dies geschehen ist soll bereits der zweite Eintrag der .txt als "CommandText" entstehen.
    Es gibt/soll die Option sein wo man Rarity und Upgrade gar nicht braucht.
    Deswegen soll da bereits der "CommandText" entstehen.
    Ich hoffe es ist nun verständlicher.
    Ansich passt schon alles bis auf eben das eben erwähnte.
    Das hat davor geklappt jedoch war das Problem mit dem Rarity 0, welches jedoch mittlerweile auch behoben wurde.