AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Listindex überschreitet Maximum - Einmal ja, einmal nein?
Thema durchsuchen
Ansicht
Themen-Optionen

Listindex überschreitet Maximum - Einmal ja, einmal nein?

Ein Thema von draGo · begonnen am 31. Okt 2006 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 18:37
Zitat von draGo:
Delphi-Quellcode:
for I := 0 to StringLst.Count -1 do begin
  frmmain.anzeige.Rowcount := frmmain.anzeige.rowcount +1;

  if zeile > 7 then
    zeile := 0;

   if StringLst.Strings[i] = 'then
      StringLst.Delete(i);


  Frmmain.Anzeige.Cols[zeile].Add(StringLst.strings[i]);
  zeile := zeile +1;

 end;
Du löscht Einträge in der StringList und dabei verringert sich der Count. Das Problem dabei: For Schleifen evaluieren nur einmal die Laufvariablengrenzen und während des Durchlaufs nicht mehr. Dadurch läuft er zu der Originalen Count Anzahl durch und greift damit auf die ungültigen Einträge zu, wenn welche gelöscht wurden. Abhilfe schafft hier die Schleife rückwärts laufen zu lassen (DownTo) oder einen anderen Schleifentyp zu nutzen wie z.B. While.
  Mit Zitat antworten Zitat
draGo

Registriert seit: 4. Apr 2006
44 Beiträge
 
Delphi 7 Personal
 
#12

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 31. Okt 2006, 22:21
Hallo Muetze,

habe die Schleife jetzt rückwärts laufen lassen mit

Delphi-Quellcode:
for I := StringLst.Count -1 DOWNTO 0 do begin
//code...
Mache ich da etwas falsch? Denn einen Error mit "Listindex überschreitet Maximum" erhalte ich immer noch...

mfg
drago
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#13

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 1. Nov 2006, 00:17
Prüf mal mit dem Debugger ob "StringLst.Count" auch größer 0 ist
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 1. Nov 2006, 07:35
@Ghostwalker, wäre "StringLst.Count"=0 (dh. der I-Startwert=-1), dann würde diese DownTo-0-Schleife überhaupt nicht durchlaufen.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 1. Nov 2006, 09:08
Ähm...das ist natürlich richtig. Ich sollte Nachts um Eins keine Postings mehr mache....
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#16

Re: Listindex überschreitet Maximum - Einmal ja, einmal nein

  Alt 1. Nov 2006, 09:16
Hallo draGo,

beim Löschen eines Listenelements rücken normalerweise alle folgenden Elemente nach. Das letzte Element einer Liste hat aber keine Nachfolger. Entfernst du es aus der Liste, muß jeder Zugriff auf diese Position zu der von dir beschriebenen Fehlermeldung führen.

Wenn das letzte Element ein Leerstring ist, entfernst du es durch einen Aufruf von Delete(). In der nachfolgenden Zeile versuchst du dann dieses (nun ungültige) Listenelement einer anderen Liste hinzuzufügen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz