unverständlich Fehlermeldung



  • Listindex überschreitet das Maxium(990)

    heißt das nun, dass meine Stringliste zu viele Eintrage benötigt und der es nicht in der Menge passt??? eigentlich kann es nicht sein, weil die Stringsliste nur 54 Einträge hat



  • Hi,

    hast du schon mal im Debugmodus jeden Schritt einzeln angeschaut???

    Gruß
    Handyman



  • Listindex überschreitet das Maxium(990)

    Die Meldung besagt, daß Du versuchst auf Element 990 (z.B. ListBox1->Items->Stings[990]; ) der ListBox zuzugreifen, soviel ist da eber nicht drinnen 🙂

    [ Dieser Beitrag wurde am 07.01.2003 um 15:16 Uhr von Peter editiert. ]



  • er geht wirklich so oft durch die liste, mein zähler funktioniert irgendwie nicht so wie er sollte
    danke für den tipp, hab da überhaupt nicht dran gedacht



  • Kannst zur Kontrolle ja mal ne zweite ListBox aufziehen und die Zählerstände da rein schreiben lassen. Dann siehst Du sofort, wie sich die Werte verhalten.



  • ok, habe das mit dem zähler geklärt - das war aber nicht der grund für die fehlermeldung.
    ist die anzahl begrenzt?? auf wieviel wenn ich so unwissend fragen darf??

    zu meinem programm: ich habe ne exceldatei (anzahl der einträge wechseln) und wandel sie in eine csv datei um sie in einer stringliste zu speichern und um diese auswerten zu können



  • Zeig mal den Schleifenkopf. Natürlich lieg der Fehler am Zählen. Was die Meldung bedeutet hat Peter schon ausführlich beschrieben. Leider ist diese Meldung in der Tat etwas verwirrend.

    Du kannst aber auch selber den Fehler finden indem du einfach mal den Debugger benutzt.

    -junix

    <edit>Ausserdem empfehle ich auch mal die Suchfunktion zu benutzen mit dieser Fehlermeldung. Bist nicht der/die erste die sich über die Meldung wundert (-;</edit>

    [ Dieser Beitrag wurde am 07.01.2003 um 17:01 Uhr von junix editiert. ]



  • TStringList* Zeilen_Liste = new TStringList;
    Zeilen_Liste->LoadFromFile("c:\\Standard.csv");
    
    int a=0;
    a=Zeilen_Liste->Count; //gibt die richtige anzahl an
    :
    :
    for(int i = 1; i <= a ; i++) //geht genau a* durch und dann bricht er mit der fehlermeldung ab
    {
      //suche String und schreibe in Tabelle
    }
    


  • 1. Wieso der Umweg über a und wiesonicht direkt TStringList::Count anstelle von a im Schleifenkopf?
    2. Lies mal den 2. Satz in der Beschreibung zu TStringList::Strings in der Hilfe

    Wenn du das gemacht hast, wirst du vermutlich auch merken was genau falsch läuft (-;

    -junix



  • Original erstellt von <biene>:
    *```cpp
    for(int i = 1; i <= a ; i++) //geht genau a
    durch und dann bricht er mit der fehlermeldung ab
    {
    //suche String und schreibe in Tabelle
    }

    Genau der Code an der Stelle "suche String und..." wäre jetzt mal interessant.

    Vermutung: Du beginnst in deiner Schleife bei 1 und hörst bei Anzahl der Einträge auf. Wenn du dann in deiner Suche nach dem String auf den Index i zureifst, dann kann es sein, dass für diesen Index kein Eintrag vorhanden ist.

    Verbesserung: Beginn in deiner Schleife bei 0 und höre beu Anzahl der Einträge -1 auf.



  • Original erstellt von <biene>:
    *```cpp
    TStringList
    Zeilen_Liste = new TStringList;
    }

    scheint auch nen fehler zu sein ..



  • Original erstellt von 1ntrud0r:
    scheint auch nen fehler zu sein ..

    Warum??
    Ist doch ein legitimer Aufruf



  • es geht, ich habe den zähler falsch gewählt

    for(int i = 0; i < a ; i++)
    {
    }
    


  • Original erstellt von JeGr:
    Vermutung: Du beginnst in deiner Schleife bei 1 und hörst bei Anzahl der Einträge auf. [...] Verbesserung: Beginn in deiner Schleife bei 0 und höre beu Anzahl der Einträge -1 auf.

    Danke, JeGr, dass du <biene> jegliche Motivation genommen hast meinem Hinweis nachzugehen. Genau das steht nämlich in der Beschreibung zu TStringList::Strings, dass der Index mit 0 beginnt. (Dass die Schleife mit 1 beginnt ist ja am schleifenkopf ersichtlich)

    -junix



  • Original erstellt von JeGr:
    **
    Warum??
    Ist doch ein legitimer Aufruf**

    legitim ist nicht immer 🙂 richtig ? ... zuweisungen werden nunmal mit *<name> gemacht ... zumal man anmerken muss das so sachen sehr oft probleme geben .. der bcb compiler is das vielleicht sehr tollerant und flexibel andre sind es _nicht_ !

    [ Dieser Beitrag wurde am 08.01.2003 um 11:38 Uhr von 1ntrud0r editiert. ]



  • Ah ich vergass. <biene>: Ich nehme an die Methoden Find() und IndexOf() sind dir ein Begriff und genügen einfach nicht deinen Anforderungen an das Suchen, ja?

    -junix



  • Original erstellt von 1ntrud0r:
    *[...]zuweisungen werden nunmal mit <name> gemacht[...]

    Den Satz erklär mir mal, bitte.

    -junix



  • Ich glaube IntruDor meint, dass man in einem Namen keine "" haben sollte.
    Allerdings kann ich das auch nicht nachvollziehen.
    Mir ist nur die Empfehlung bekannt, dass man es vermeiden sollte, dass Variablennamen mit einem "
    " beginnen.



  • es war nur nen hinweis !! das z.B gcc sowas als .. syntax fehler ansieht .. rein zur info



  • Original erstellt von 1ntrud0r:
    das z.B gcc sowas als .. syntax fehler ansieht .. rein zur info

    Mein gcc version 2.95.3 20010315 (SuSE) hat keine Probleme mit Unterstrichen in Variablennamen.

    Rein zur Info. 😉


Anmelden zum Antworten