Announcement

Collapse
No announcement yet.

"List Index out of Bounds(-1)"-Meldung bei Programmstart

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "List Index out of Bounds(-1)"-Meldung bei Programmstart

    Hallo Delphi-Community,
    ich schreibe gerade einen Installer, der logischerweise unter allen
    Windows-Versionen funktionieren muß. Das tat er auch, ich habe es in
    regelmäßigen(offensichtlich zu großen) Abständen überprüft. Ich habe
    Windows 98 und Windows 2000 auf meinem Rechner, programmiere aber nur
    unter Windows 98 (da funktioniert mein "zweimonitoriges" System und ich
    habe mehr Platz - Win2K erkennt meine zweite Grafikkarte nicht richtig).
    Als ich wieder einmal mein Setup unter Win2K ausprobierte kam beim
    Programmstart plötzlich die folgende Meldung: "List Index out of Bounds
    (-1)".Dieser Fehler tritt unter Windows XP gleichermaßen auf und ich habe
    ihn auch schon mal bei einem anderen Programm gesehen(mp3Workshop).
    Ich habe seit der letzten Überprüfung allerdings zu viel geändert, um zu
    wissen, wo der Fehler liegen könnte. Nahe liegt, dass er durch eine
    TStringList oder Ähnliches verursacht wird. Aber die habe ich auch schon
    vor dem ersten Auftreten des Fehlers in dem Programm verwendet.
    Das Programm ist ziemlich groß, den Fehler zu finden gestaltet sich
    dementsprechend schwierig, weshalb es toll wäre, wenn mir jemand helfen
    könnte. Ich bin sicher, das ist ein bekanntes Problem, ich habe es schon
    bei mehreren Programmen gesehen.

  • #2
    Versuch mal die Jedi Code Library (http://delphi-jedi.org/CODELIBJCL). Mit JclDebug und dem entsprechenden Wizard bekommt man einen Stacktrace mit Zeilennummern bei Exceptions

    Comment


    • #3
      Hi Robert,
      ich hatte in den letzten zwei Wochen ein wenig Schulstress und
      antworte deshalb erst jetzt. Kurz bevor ich mir die JCL angucken
      wollte, probierte ich mein Programm nochmal aus, und: es lief !
      Das hat allerdings den Nachteil, das ich keine Ahnung habe, was den
      Fehler nun verursacht hat - falls er später wieder auftritt und für
      Leute mit dem gleichen Problem. Denn eigentlich habe ich nichts
      geändert, hatte ja kaum Zeit. Falls jemand das Problem und die Lösung
      kennt, also bitte auf jeden Fall posten.
      Trotzdem herzlichen Dank für die JCL, dort habe ich dafür sehr viele
      andere Dinge gefunden, die ich gut gebrauchen kann

      Comment


      • #4
        Mit meinen 41 Jahren und ohne Kinder habe ich zwar keinen Schulstress, aber viel Zeit bleibt trotzdem nicht :-)<br>
        Pruefe doch mal deine Zugriffe auf Listen durch. Wenn du ein [Count-1] hast und Count = 0 ist dann bekommst du den Fehler

        Comment


        • #5
          Hi Robert,
          diese Listen-Zugriffe habe ich gleich als erstes überprüft (ich programmiere ja auch nicht erst seit gestern in Delphi) - ohne Ergebnis. Ausserdem tritt der Fehler ja nur unter Windows 2000 und XP auf (evtl. auch NT ?), unter Windows 98 funktionierte das Programm dagegen bestens. Ich habe immer noch keine Ahnung, woran es lag, bisher funktioniert das Programm aber weiterhin ohne Probleme und ist bald fertig...ich kann nur hoffen :+

          Comment


          • #6
            Es gibt gelegentlich auch Problemem mit der VCL selbst. Windows XP ist mit allerlei Bugs und Inkompatibilitaeten versehen. Es kann also durchaus VCL-Code auf die Nase fallen

            Comment


            • #7
              Hi Robert !
              Ich habe den Fehler gefunden. Mir ist eingefallen, was ich geändert habe: Ich habe eine Registry-Funktion entfernt. Diese war an der Fehlermeldung schuld. Um das ganze etwas genauer zu beschreiben:
              Ich habe in meinem Programm die TRegistry-Methode "GetKeyNames" verwendet, die ja eine TStringList benötigt. Ich weiß nicht mehr, welchen Key genau ich da abgefragt hatte, aber eines ist sicher:
              Der Key existierte nur unter Windows 98 - unter Windows 2000 und XP nicht mehr (soviel zur Abwärtskompatibilität), da dies ein Key vom System mit Systeminformationen war, die bei Win2K und XP woanders zu suchen sind. Ergo ist die TStringList leer, ihr Index also -1.
              Auf jeden Fall danke für die Mühe und die JCL

              Comment

              Working...
              X