Collection auslesen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von kmaik.

    Collection auslesen

    Hallo liebe Nutzer,
    seit einiger Zeit befasse ich mich mehr oder weniger mit Visual Studio 2010 und bin an ein Problem gestoßen wo ich nicht weiter weis und bitte hier freundlichst um Hilfe.

    Ich habe eine Collection, die zur Laufzeit durch eine split() Funktion zeilenweise mit Daten befüllt wird.
    die Anzahl der eingefügten werte möchte ich ermitteln.
    die Anzahl der ich sage mal Zeilen der Collection ist kein Thema das kann ich mit .Count ermitteln jedoch fügt mir Split() in die genannten Zeilen eine unterschiedliche Anzahl von werten ein, die möchte ich ermitteln.

    Folgendes habe ich versucht:
    Spoiler anzeigen


    Quellcode

    1. [vbnet]
    2. dim varZahl as String
    3. dim Zahlen as Collection
    4. zahlen = new Collection
    5. for i0 as integer= 1 to 5 step 1
    6. for i1 as integer =1 to 10 step 1
    7. varZahlen= varZahl & ", " & i1
    8. next
    9. Dim zeilenwert= split(varZahlen)
    10. zahlen.add(zeilenwert)
    11. next
    12. Console.WriteLine(CStr(zahlen.Count))
    13. [/vbnet]



    es wird mir die korrekte Anzahl von 5 Einträgen angezeigt
    Da sich jedoch bei jedem Schleifendurchlauf die Anzahl der Einträge je Zeile erhöht benötige ich diese Anzahl um direkt auf die einzelnen Einträge zuzugreifen.
    Im Programmablauf ist diese For-Schleife(en) nicht vorhanden, da wird eine Textdatei Ausgelesen in der je Zeile eine Unterschiedliche Anzahl von Einträgen Kommagetrennt enthalten ist.

    Ich hoffe ihr könnt mir helfen...

    kmaik
    @kmaik Willkommen im Forum. :thumbup:
    Fang an und schmeiß zunächst Deinen Code weit weg. Sorry.
    Danach beginnst Du, Dein Problem zu beschreiben, ohne einen Programmier-Terminus zu verwenden.
    Diese Beschreibung können wir hier diskutieren und Du kannst danach das ganze neu in Code gießen.
    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!
    Hallo @kmaik

    Nach deinem Beispiel kannst du die Anzahl Elemente pro "Zeile" so abfragen.

    VB.NET-Quellcode

    1. For i As Integer = 1 To Zahlen.Count
    2. Console.WriteLine(TryCast(Zahlen.Item(i), String()).Count)
    3. Next


    Ich würde aber für deinen Fall die List(Of T)-Klasse nehmen, damit entfällt die Typenkonvertierung.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim varZahl As String = ""
    2. Dim Zahlen As New List(Of IEnumerable(Of String))
    3. 'Befüllen
    4. For i0 As Integer = 1 To 5
    5. For i1 As Integer = 1 To 10
    6. varZahl = varZahl & "," & i1.ToString
    7. Next
    8. Zahlen.Add(varZahl.Remove(0, 1).Split(","c))
    9. Next
    10. 'Abfragen
    11. For i As Integer = 0 To Zahlen.Count - 1
    12. Console.WriteLine("Zeile {0} hat {1} Elemente", i+1, Zahlen.Item(i).Count)
    13. Console.WriteLine("Der {0}. Wert von Zeile {0} lautet: {1}", i+1, Zahlen.Item(i)(i))
    14. Next


    Gruss
    Hi,

    erst einmal recht vielen Dank für eure Antworten.

    zu RodFromGermany,
    deine Bitte ist bei mir gut angekommen und ich werde mir das verinnerlichen. wie ich schon beschrieben habe beschäftige ich mich seit einiger Zeit mehr oder weniger mit dem Thema, noch als blutiger Anfänger. um hier Probleme wälzen und diese ganz Konkret auszudrücken werde ich wohl noch etwas Zeit brauchen, momentan sind es noch die ersten geh versuche. Dennoch Danke ich Dir und werde es beherzigen

    zu HenryV,
    der erste Teil hat mir bereits geholfen um hier ein wenig weiter zu kommen. mit dem weiteren List(Of T) werde ich mich sicher auch noch vertraut machen.

    Sicher gibt es zu allem bessere Lösungen, nach denen ich in Zukunft suchen werde, dabei sind natürlich auch Tipps und Anregungen hilfreich welche ich mir bestimmt holen werde wenn ich denke in diese Thematik weiter einzusteigen. noch sind es erste geh versuche die mehr oder weniger Hilflos erscheinen, ich bitte daher um Nachsicht und danke für eure mühen.

    Ich komme damit erstmal weiter!