Array zu String, danach Split?

02/02/2017 10:01 Chii.#1
Moinsen,

ich stehe glaube ich gerade etwas auf dem Schlauch.. Bastele für meine Mutter ein kleines Hilfstool für Textdateien, die sie für ihre Firma braucht. Das Tool liest bis jetzt Zeilenweise die Textdateien ein.

Format: ID'Vorname'Nachname'Strasse'Nr'PLZ'Ort'Telefon'Han dy'DatenX'DatenY'USW'UndSofort#

Folgendes Problem: Über eine Funktion bekomme ich diese Dinger einzeln, zeilenweise getrennt in einem Array, bis alle Zeilen durch und das Dokument zu Ende ist (ergo: zb. 23 Zeilen -> 23 Arrayeinträge). Jetzt möchte ich diese Einträge alle einzeln nochmal aufsplitten und gleichzeitig in eine Listbox eintragen, möchte also auch auf zum Beispiel GesplitteteZeile(2) zugreifen, um nur den Nachnamen zu erhalten. Wenn ich nun folgendes mache, erhalte ich einen Fehler:


-> kunden.getKunden() ist die o.g. Funktion zum zeilenweise auslesen, sie wirft das fertige Array zurück.
-> Der Listbox Eintrag soll dann Vorname - Leerzeichen - Nachname sein.

Folgende Fehlermeldung erhalte ich:



Über Hilfe würde ich mich sehr freuen. :)
02/02/2017 10:43 0x6a6b#2
Du kannst nicht durch einen leerstring splitten
02/02/2017 10:46 Chii.#3
Quote:
Originally Posted by 0x6a6b View Post
Du kannst nicht durch einen leerstring splitten
"kunde" ist doch nicht leer, das wird doch von der For Each Schleife jede Runde neu gefüllt? - Das dahinter in den Klammern ist ja der Seperator..

Oder habe ich deine Aussage falsch verstanden?
02/02/2017 10:47 0x6a6b#4
kunde.Split("'") liefert immer eine exception oder eine leere array
02/02/2017 10:47 Chii.#5
Quote:
Originally Posted by 0x6a6b View Post
kunde.Split("'") liefert immer eine exception oder eine leere array
Wieso denn? >'< ist doch im String enthalten?
02/02/2017 10:53 0x6a6b#6
Achso, das sieht man am handy nicht so gut.
Du solltest prüfen ob die einträge vorhanden sind, du willst was verarbeiten was unter umständen gar nicht da ist.
Frag dich mal: was passiert bei einer leeren zeile? Was passiert wenn zu wenig ' da sind?
Schau dir mal newtonsoft.json an und arbeite mit klassenstrukturen. Am besten aber schaust du dir mssql oder mysql mit dem entity framework an.
02/02/2017 10:57 florian0#7
@[Only registered and activated users can see links. Click Here To Register...] schlecht gewählter separator (und schlechte Augen?). Das übersieht man schnell mal ;D


Stellt sich die Frage, in welcher der beiden Zeilen die Fehlermeldung auftaucht ...
Die Zeile mit dem Split? ... eher unwarscheinlich, dann müsste kunde ja NULL sein ...
Dann schon eher Listbox.Items.Add , was bedeuten wurde eines oder beide Felder deines Arrays sind NULL.

Überprüf das doch mal mit dem Debugger. Schau wie viele Felder das Split-Ergebniss hat. Vielleicht hast du den falschen Separator? Sieht gleich aus, ist aber ein anderer ... ?
02/02/2017 11:01 Mafia67#8
Einfaches Beispiel:
Code:
Dim str As String = "A'B'C'D"

Dim array As String() = str.Split("'")

For Each i In array
  ListBox1.Items.Add(i)
Next
02/02/2017 11:32 Chii.#9
Habs gerade Gott sei Dank gefunden, danke für die Hilfe!

Ich hatte in der Funktion getKunden ein Array, welches "anzahl" groß war, hab dabei aber die 0 vergessen mitzuzählen, also war der letzte Eintrag natürlich leer... :facepalm: