DataRow.ItemArray in String Array

  • C#

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von MrSchabernack.

    DataRow.ItemArray in String Array

    Gauf,

    möchte wie der Titel schon sagt ein ItemArray in einen String schreiben, leider funktioniert das aber nicht (NullRefernceExeption). Weiß einer wie man das anstellen könnte? Eigentlich müsste es ja ganz easy gehen denn in eine LstB kann ich ja auch ohne Probleme schreiben...

    Code:

    VB.NET-Quellcode

    1. foreach (DataRow dr in dtAlle.Rows)
    2. if (iBeginAsien >= 0 && iEndAsien > 0)
    3. {
    4. for (int i = iBeginAsien; i <= iEndAsien; i++)
    5. {
    6. lstLand.Items.Add(dtAlle.Rows[i].ItemArray[1].ToString());
    7. strHaupt[i] = dtAlle.Rows[i].ItemArray[2].ToString();
    8. }
    9. }


    Gruß MrSchabernack
    Da du die Hälfte vom relevanten Code weggelassen hast, kann ich nur raten, dass strHaupt bei dir gar nicht initialisiert ist. Wenn du es als String[] deklariert hast, musst du das Array auch mit der passenden Größe initialisieren. Hast du es als List<String> angelegt, muss es ebenfalls initialisiert werden, im vorliegenden Fall sollte man neue Elemente dann aber mit Add() hinzufügen. Der Zugriff über den Indexer [] dürfte bei einem List<T>-Objekt nur lesend klappen.

    Edit: Das mit Dim und ReDim war völliger Quatsch - wir sind ja bei C#. Sorry ;) Aber ich denke du weißt trotzdem was ich meine :D
    Edit2: Hab das mal entsprechend korrigiert...
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    @sonne
    Nein die sind mehr oder weniger für dieses Problem egal.
    der fehler tritt nur in der 7. Zeile ein.

    @arby
    ja habe etwas code extra raus gelöscht um die thread größe nicht zusprengen. das string array ist so deklariert falls dir C# etwas vertraut ist

    VB.NET-Quellcode

    1. string[] strHaupt;

    aber mit nr List of String könnte ichs auch mal probieren
    @Arby
    Stimmt, es sind 2 Varianten möglich: "dtAlle.Rows(i)" im falschem Bereich oder "strHaupt[ i]". In beiden Fällen würde meine Aussage stimmen. :P

    @MrSchabernack
    Was mir aber auffällt, du hast eine ForEach-Schleife mit "dr" und greifst trotzdem über dtAlle.Rows(i) zu, wozu brauchst du dann "dr" und ForEach?

    EDIT: Gut, wenn du ein leeres Array mit Größe 0 deklarierst, dann ist es klar, warum es nicht geht.

    der fehler tritt nur in der 7. Zeile ein.

    Und das sollten wir uns jetzt selbst denken oder wie? Du hast es im Anfangspost gar nicht erwähnt. Ich glaube, ich sollte mehr konsequent sein und nur auf Beiträge antworten, die es auch verdienen. :rolleyes:

    MrSchabernack schrieb:

    string[] strHaupt;
    Dann fehlt - wie vermutet - irgendwo die Initialisierung des Arrays. Das ist nur die Deklaration. Objekte darin existieren nicht, so dass der Zugriff über den Indexer strHaupt definitiv eine Exception auslöst.

    Du könntest vor dem Schleifenbeginn beispielsweise ein

    VB.NET-Quellcode

    1. strHaupt = new string[iEndAsion+1];

    einfügen.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.