Index der Liste überschreitet das Maximum
-
Hi an die Geräte zuhause.
Ich habe mit meinem eigenen Gerät ein Problem:
Mithilfe der Codeschnibbel von bytesandmore lass ich den Text einer website auslesen und speichern. Das ganze soll ca 300 mal passieren, die Seiten sind alle gleich aufgebaut und etwa 170 Zeilen lang.
Die daraus erstellten Files werden dann geöffnet, bearbeitet und wieder gespeichert.
Vewendet werden hierbei mehrere Stringlisten.
Bei ungefähr dem 70-120. Durchgang (vollkommen unterschiedlich) kommt die Meldung: "Der index der Liste übersteigt das Maximum(0)"
Auch wenn die Websiten identisch sind, kann ein einmal beim 70., manchmal aber auch erst beim 150. durchlauf auftreten.
Was genau sagt diese Fehlermeldung aus und wie ist das zu beheben?
bye
Petä
-
Die Meldung ist etwas kryptisch. Englisch heisst das Ding: List of index is out of bounds (indexnummer) oder anders ausgedrückt: Den von dir angewählte String gibts nicht in der Liste, der geforderte Index überschreitet das Listenmaximum.
Du solltest dich also vorher vergewissern ob die Stringliste wohl leer ist, oder ob sie soviele Elemente beinhaltet, wie du erwartest.
-
Erstmal Danke.
Diese komische Meldung tritt vorwiegend dann auf, wenn Abfolgen zwischen den Abfragen gering sind. Wenn ich ein Sleep(2000) zwischen fertigladen der Seite und extrahieren des Codes baue, dann läuft es zumindest bei mir fehlerfrei....
mfg&n8
Petä
-
Das hieße ja, das Du auf Daten zugreifst, die eventuell (noch) nicht verfügbar sind. Versuche es doch mal mit Application->ProcessMessages(), oder mit einer Methode, die aufgerufen wird, wenn die Daten unter Garantie zur Verfügung stehen.
Gruss
-
Rostfrei[] schrieb:
Versuche es doch mal mit Application->ProcessMessages(),
Dafür sollte man dich steinigen!
Rostfrei[] schrieb:
oder mit einer Methode, die aufgerufen wird, wenn die Daten unter Garantie zur Verfügung stehen.
Viel besser! Ich finde dieser Vorschlag sollte sich strafmildernd auswirken: Ich plädiere für auspeitschen
-
Petä schrieb:
Diese komische Meldung tritt vorwiegend dann auf, wenn Abfolgen zwischen den Abfragen gering sind.
Abfolgen soll soviel heissen wie Zeitdauer zwischen Abfrage und Weiterverarbeitung?
Petä schrieb:
Wenn ich ein Sleep(2000) zwischen fertigladen der Seite und extrahieren des Codes baue, dann läuft es zumindest bei mir fehlerfrei....
Das heisst nichts anderes, als das du ein Synchronisierungsproblem hast. Wie es Rostfrei schon sagte, versuchst du offenbar auf Daten zuzugreifen, die noch nicht verfügbar sind, weil offenbar Auswertung und Datenbeschaffung bei deiner Anwendung mehr oder weniger Parallel laufen, oder das Eine sogar das Andere überholen kann...
Ist natürlich schwierig, das vom Schiff aus zu beurteilen, da du dich leider nicht wirklich über den Design deiner Applikation ausgelassen hast.
-
Ich bin eigentlich davon ausgegangen, dass
CppWebBrowser1DocumentComplete()
Nur aufgerufen wird wenn das Dokument WIRKLICH komplett ist. Und da die Seite absolut Framerei ist, sollte das ja auch so sein... Nur wird das ganze offenbar schon vorher aufgerufen. aber wieso?
Petä
-
Vermutlich schon. Die Frage ist allerdings, ob die Datei dann auch schon da abgelegt ist, wo sies soll...