Laden...

Probleme mit Arraylist --> zweidimensional

Erstellt von fe_gl84 vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.226 Views
F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren
Probleme mit Arraylist --> zweidimensional

Guten Tag,

da ich seit gestern ein Projektauftrag (Auswertung von Buchhaltung) bekam, habe ich mit einem Problem zu bekämpfen:

Beim auslesen von 35000 Zeilen große log-Datei (in *.txt und sieht pro Zeile so aus: "Datum;Käufer;Zahlungsart;Artikel_Nr;Verkäufer;Status;Skript;Preis") funktioniert mein Programm mit splitten und zuweisung zu array wie erwünscht! 👍

Aber für gefilterte Ausgabe von bestimmte arrays, wie z.b. nur Käufer, gibt es Probleme! X(

Hinweis: ich habe Array-List genommen, weil Log-Datei ohne Einschränkung der Zeilenanzahl aufgenommen werden soll!

        

ArrayList buchung = new ArrayList();  //public deklariert


        while (file.Peek() > -1)
        {                   
         //buchung = "Datum;Käufer;Zahlungsart;Artikel_Nr;Verkäufer;Status;Skript;Preis";
        buchung.Add(file.ReadLine().Split(';',' '));
        }


        private void btn_kaeufer_Click(object sender, EventArgs e)
        {
            for (i = 0; i <= buchung.Count; i++)
            {
                lst_main.Items.Add(buchung[i,2]);
            }

        }


Ich hoffe, Sie können mir etwas helfen 🙂

Gruß

Florian

N
4.644 Beiträge seit 2004
vor 17 Jahren

Original von fe_gl84
Aber für gefilterte Ausgabe von bestimmte arrays, wie z.b. nur Käufer, gibt es Probleme! X(

Welche wären denn das?

Original von fe_gl84
Ich hoffe, Sie können mir etwas helfen 🙂

Wir sind Ihr und nicht Sie. 😉

F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Es gibt Fehlermeldung raus: Fehler 1 Keine Überladung für die this-Methode nimmt 2 Argumente an. ....\AuswertungAnwendung\Form1.cs 56 36 AuswertungAnwendung

und zwar an diese stelle:

  
              
lst_main.Items.Add(buchung[i,2]);


Danke für eure Hilfsbereitschaft 🙂

Gruß

Florian

M
1.439 Beiträge seit 2005
vor 17 Jahren
((string[])buchung[zeilenIndex])[spaltenIndex]
M
1.439 Beiträge seit 2005
vor 17 Jahren

Es wäre aber besser, du würdest zuvor prüfen, ob das Format stimmt.
Ausserdem alles in einem String[] speichern ist auch nicht so schön. Verwende lieber eine Klasse, dann kannst du auf benannte Eigenschaften zugreifen(Find ich schöner und übersichtlicher).
Ach ja ab .NET 2.0 gibts List<T>

F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Naja....ich lerne C# seit 1Monate in der Ausbildung als Fachinfo! Einige kollegen konnten mir nicht helfen und viele haben kein Zeit 🙂

Würdest du mir bitte mal ausführliche Quellentext zeigen?

 "lst_main.Items.Add(buchung[i,2]);" von "((string[])buchung[zeilenIndex])[spaltenIndex]"  

ersetzen? ?(

Gruß

Florian

M
1.439 Beiträge seit 2005
vor 17 Jahren

was?

F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Geht dein Frage ausfühlicher? bitte 🙂

M
1.439 Beiträge seit 2005
vor 17 Jahren

Ich habe deinen (jetzt vor)letzten Post nicht verstanden. 😁

Aber wenn ich dich jetzt richtig verstehe, dann musst du nur buchung[i,2] durch meinen Ausdruck ersetzen.

F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Da hast du richtig verstanden 😁

also mit diese Code:

lst_main.Items.Add((string[])buchung[i])[2];

kommt leider auch fehlermeldungen raus:

Fehler 1 Nur assignment-, call-, increment-, decrement- und "new object"-Ausdrücke können als Anweisung verwendet werden.

Fehler 2 Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "int" angewendet werden.

Und nun?

Gruß

Florian

M
1.439 Beiträge seit 2005
vor 17 Jahren

Da fehlt ja auch noch eine Klammer...

F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Das habe ich auch probiert!

leider 2 Fehlermeldungen:

Fehler 1 ; erwartet.
Fehler 2 Ungültiger Ausdruck ")".

Zwar an die Stelle, wo ich noch ein Klammer eingefügt habe!

T
243 Beiträge seit 2006
vor 17 Jahren

Es fehlt ein Klammerpaar. So muss es:

lst_main.Items.Add(((string[])buchung[i])[2]);
F
fe_gl84 Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Ah...jetzt funktioniert es super! 🙂

Vielen Dank 🙂

Gruß

Florian