| |
VB.NET - Ein- und UmsteigerRe: Einträge einer Listbox splitten und in eine Liste (List(of String) einfügen | | | Autor: Manfred X | Datum: 09.07.11 23:12 |
| Hallo!
In VB.Net ist die Indizierung von Listen und Arrays null-basiert.
Von projekt-globalen Variablen ist eher abzuraten.
Wie kommen die Daten in die Listbox?
For i As Integer = 0 To listbox1.Items.Count - 1
w_string = listbox1.Items(i).ToString
s_string = listbox1.Items(i).ToString
w_string = Split(w_string, " ")(0)
s_string = Split(s_string, " ")(1)
zug_weiß.Add(Trim(w_string))
zug_schwarz.Add(Trim(s_string))
Next i
'Oder so:
For i As Integer = 0 To listbox1.Items.Count - 1
Dim w_string() As String = Split(listbox1.Items(i).ToString, " ")
zug_weiß.Add(Trim(w_string(0)))
zug_schwarz.Add(Trim(w_string(1)))
Next i MfG
Manfred
Beitrag wurde zuletzt am 09.07.11 um 23:16:55 editiert. | |
Einträge einer Listbox splitten und in eine Liste (List(of String) einfügen | | | Autor: timo_81 | Datum: 09.07.11 17:03 |
| Hi Leute,
nach jahrelanger Programmierabstinenz, hat mich das Programmierfieber wieder gepackt.
Die bisherigen Hürden wurden auch alle gemeistert - doch an folgendem Problem beiß ich auf Granit:
Ich habe ein Listboxelement in dem sich eine Schachnotation befindet. Nun möchte ich die Notation die
das Format 1. e4 e6 2. d4 d5 ... an den Leerstellen so splitten, dass ich die weißen Züge in eine Liste und die schwarzen Züge in eine weiter packen kann (Sie sollen später getrennt angesprochen werden können)
Mein Ansatz sieht wie folgt aus:
Public zug_weiß As New List(Of String)
Public zug_schwarz As New List(Of String)
Dim w_string,s_string As String
For i = 1 To ListBox1.Items.Count - 1
w_string = ListBox1.Items(i).ToString
s_string = ListBox1.Items(i).ToString
w_string = Split(w_string, " ")(1)
s_string = Split(s_string, " ")(2)
zug_weiß.Add(Trim(w_string))
zug_schwarz.Add(Trim(s_string))
Next Die Listen sollen später im gesamten Projekt verfügbar und über Indizes ansprechbar sein.
Vielen Dank für Hilfestellungen!
Grüße
timo_81 | |
Re: Einträge einer Listbox splitten und in eine Liste (List(of String) einfügen | | | Autor: timo_81 | Datum: 10.07.11 01:16 |
| Hallo Manfred,
vielen Dank für Deine Hilfe. Das Programm läuft nun ohne zu murren, allerdings ist mir noch ein Fehler aufgefallen:
Anstatt alle Werte aus der Listbox auszulesen hält er bei Zug sieben an und wiederholt dann die Züge nochmals ohne weiter zu gehen.Könnte dies an einem Zeilenumbruch liegen der im Originaltext enthalten, in der Listbox aber nicht mehr zu erkenn war?
Der geparste Text sah aus wie folgt:
1. e4 e6 2. b3 b6 3. Bb2 Bb7 4. Nc3 Nf6 5. Qe2 Be7 6. O-O-O O-O 7. f4 d5 8. e5
Nfd7 9. Nf3 Qe8 10. Re1 Ba6 11. Qf2 Bxf1 12. Qxf1 Nc6 13. Qb5 Na5 14. g4 f6 15.
Nxd5 exd5 16. Qxd5+ Kh8 17. e6 Nc5 18. Nd4 Rd8 19. Qf3 Ncb7 20. h4 c5 21. Nf5
Nd6 22. Ng3 f5 23. g5 Nc6 24. h5 Kg8 25. Rh2 Nd4 26. Qf2 Qc6 27. Bxd4 cxd4 28.
Qxd4 Ne4 29. Qe3 Bc5 30. Nxf5 Rxf5 31. Qxe4 Qxe4 32. Rxe4 Re8 33. d4 Bd6 34.
Rf2 Be7 35. c4 Bxg5 36. b4 Be7 37. c5 bxc5 38. bxc5 Rxh5
Wie man sie sind bei Zug 8 / 15 / 21 /28 /34 "Bruchstücke am Zeilenende"
Könnte da der Fehler liegen?
Vielen Dank für Deine bisherigen Bemühungen
Gruß
timo_81 | |
Re: Einträge einer Listbox splitten und in eine Liste (List(of String) einfügen | | | Autor: Manfred X | Datum: 10.07.11 05:03 |
| Hallo!
Ich kenne Deine Datenquelle nicht.
Steuerzeichen können enthalten sein, z.b.
Carriage Return / Line Feed für den Zeilenumbruch.
Abhängig davon, wie Du diesen String (Text) aufspaltest
und die Listbox-Items füllst, können solche Steuerzeichen
übertragen werden.
Als nachträglich einsetzbare Behelfslösung kannst Du die Items
"säubern", d.h. Steuerzeichen entfernen - z.B. durch
Verwendung der "IsControl"-Methode (Unicode!) der Char-Struktur.
For i As Integer = 0 To listbox1.Items.Count - 1
Dim content As New System.Text.StringBuilder(listbox1.Items(i).ToString)
For c As Integer = content.Length - 1 To 0 Step -1
If Char.IsControl(content(c)) Then content.Remove(c, 1)
Next c
listbox1.Items(i) = content.ToString
Next i Einfach mal probieren.
Günstiger wäre es, die Einträge (Züge) bereits beim Lesen/Zugreifen
kontrolliert in die Spalten einer Datatable-Instanz einzutragen und
die Steuerelemente daran zu binden.
Zu den Gründen der Zug-Wiederholung kann ich - mangels Info - nichts sagen.
MfG
Manfred | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|