Announcement

Collapse
No announcement yet.

Finde den Fehler nicht

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

  • Finde den Fehler nicht

    Hallo,

    ein mit Delphi 5.0 Pro erstelltes Programm habe ich mit Delphi 6.0 neu kompiliert. Seit dem kommt bei einem Klick auf eine TChecklist-Komponente unter Win NT dreimal die Fehlermeldung "Index überschreitet das Maximum (-1)". Danach funktioniert die Komponente wie gewohnt. Unter Win 2000 Pro tritt das Problem nicht auf.

    Wenn ich ein neues Delphi 6 -Projekt mit einer TChecklist-Komponente unter Win NT laufen lasse, kommt der Fehler auch nicht.

    Ich weiß nicht mehr weiter.

    Gruß
    Reinhold

  • #2
    Hört sich an, als würde beim Zugriff auf die Werte der Checklistbox das Maximum überschritten werden. Wie soll ich das besser erklären? Wenn du 7 Werte in der Box hast, dann <b>darfst</b> du nur von Null bis Sechs zugreifen. Sieben wäre z.B. so ein Fehler.

    Prüf doch mal, wann und wo auf die Checklistbox zugegriffen wird. Mit großer Wahrscheinlichkeit findest du da den Fehler.
    Vielleicht beim Löschen von ausgewählten Items? )

    Mathias

    Comment


    • #3
      Der von Dir beschriebene "Fehler" ist mir bekannt und gehört eher zu den Anfängerproblemen.

      Meine CheckListBox wird beim Programmstart gefüllt. Eine inhaltliche Änderung findet während des Programms nicht mehr statt. Sie dienst lediglich der Auswahl von Personennamen. Und trotzdem kommt die besagte Fehlermeldung beim Anklicken eines Items (dreimal und dann nicht mehr). Das Unlogische dabei ist schließlich doch auch, dass exakt das selbe Programm sowohl vorher unter Delphi 5.0 PRO als auch jetzt mit Delphi 6.0 PRO (SP1) unter Windows 2000 tadellos funktioniert, aber eben nicht mehr unter Windows NT

      Comment


      • #4
        Ich wollte dir nicht zu nahe treten.

        Es ist ohne Einblick in Code-Teile ohnehin sehr schwer, die Lösungen zu finden. Und du wirst zugeben, wenn man nur dein erstes Posting liest, dann denkt man in erster Linie an besagten Anfängerfehler.

        Gut: wobei ich deinem Hinweis bezüglich Win2000 und NT wohl nicht sehr viel Bedeutung beigemessen habe. (

        Mathias

        Comment


        • #5
          Hi,<br>
          Probier doch mal ob's verschiedenen Werte für ItemIndex gibt <br>
          <pre>
          procedure TForm1.CheckListBox1Click(Sender: TObject);
          begin
          ShowMessage(IntToStr(CheckListBox1.ItemIndex));

          {
          property ItemIndex: Integer read GetItemIndex write SetItemIndex;
          Vieleicht liefert SendMessage einen falschen Wert
          if MultiSelect then Result := SendMessage(Handle, LB_GETCARETINDEX, 0, 0)
          else Result := SendMessage(Handle, LB_GETCURSEL, 0, 0);
          }
          end;
          </pre&gt

          Comment


          • #6
            Hallo,

            Mathias, vielen Dank für Deine Antwort. Du konntest ja tatsächlich nicht wissen, dass der Schreiber (ich selbst) kein Anfänger mehr ist. Besser so als dass Anfänger in diesem Forum keine Antwort mehr bekommen.

            Andreas, auch Dir vielen Dank für den Tip.

            Ich nehme an, dass ich bei genauerem Nachforschen wieder auf irgendeinen der vielen Bugs in Delphi 6.0 stoßen werde. Ich habe es jetzt aber aufgegeben und wieder Delphi 5.0 installiert. Jetzt läuft's wieder. Dieses sch... Delphi 6 versuche ich jetzt wieder an Borland zurückzugeben.

            Übrigens ist der Schritt von Delphi 6.0 zurück zu Delphi 5.0 nicht unbedingt einfach. Mit Delphi 6.0 abgespeicherte DFM-Dateien beinhalten neben in Delphi 5.0 nicht vorhandenen Eigenschaften für die deutschen Umlaute sowie anderer Sonderzeichen nämlich Konstrukte wie '#169', die von Delphi 5.0 beim Laden mit einer Fehlermeldung quittiert werden und sehr häufig das korrekte Laden des Formulars verhindern.

            Gruß
            Reinhol

            Comment

            Working...
            X