![]() |
EStringListError
Hallo,
ich bin absoluter Delphi-Depp und sitze hier schon seit Stunden an der selben Stelle fest... Ich komme einfach nicht auf den Fehler. Vielen Dank für jegliche Hilfe! Im Project Project1.exe ist eine Exception der Klasse EStringListError aufgetreten. Meldung: 'Der Index der Liste überschreitet das Maxiumum (2). Prozess wurde angehalten. Mit Einzelne Anwendung oder Start fortsetzen.
Delphi-Quellcode:
procedure TForm1.Button21Click(Sender: TObject);
var i:integer; dummy:string; begin for i:=0 to (listbox2.items.count-1) do begin dummy:=ListBox2.Items[i]; listbox1.items.add(dummy); ListBox2.Items.Delete(i); label3.caption:='Gesamt:' + ' ' + inttostr(ListBox1.Items.Count); label6.caption:='Gesamt:' + ' ' + inttostr(ListBox2.Items.Count); edit3.text:=''; edit4.text:=''; end; end; |
Re: EStringListError
Nabend,
Wenn du innerhalb der Schleife löscht, veringert das doch die Länge oder nicht, was dann dazu führt das du nachher auf ein Element zugreifen willst das nicht vorhanden ist..., obwohl Count sich dann ja auch veringert sollte, aber da weiß ich nicht genau, ob er den Endwert jedes Mal neu bezieht, geb ich erstmal meinen Senf dazu. Anstatt die Elemente einzeln zu löschen, versuch doch einfach die Listbox2 danach zu clearen. Hoffe geholfen zu haben, HalloDu |
Re: EStringListError
Oder lass die Schleife in die andere Richtung laufen.
|
Re: EStringListError
:wall:
Dankeschön, das wars! Nach der Schleife Alles clearen hat das Problem behoben... Fehler wurde in der Dummy:=Listbox2.items[i]zeile angegeben... Vielen Dank!!! :drunken: |
Re: EStringListError
Hi,
Die Elemente kopieren geht mit
Delphi-Quellcode:
Siehe
ListBox2.Items.Assign(ListBox1.Items);
![]() Über ![]() Und in der Schleife die Edits jedesmal zu leeren (was übrigens auch mit ![]() Und bitte mach nicht so eine Smiley-Flut. Mfg FAlter |
Re: EStringListError
[OT] Ach, was Smilieflut angeht hatten wir schon schlimmere. :stupid: [/OT]
|
Re: EStringListError
Leider habe ich die Selbe Fehlermeldung auch an einer 2. Stelle (diesmal mit dem Wert 2) wobei ich jedoch nichts lösche...
Zur Erläuterung: Mein Programm soll aus einem Spielerpool selbst einigermaßen faire Teams erstellen, und diese später in einen Turnierbäume eintragen. Dabei gibt man eine pro Spieler eine Wertung ein (max. 4 Stellige Zahlen) und einen Spielernamen. Vor die Spielerwertung werden automatisch die entsprechende Anzahl Nullen gestellt. Nun soll das Programm die Spielerwertung durchgehen, per zufall einen der Spieler mit der besten Wertung bestimmen. Hinterher soll diesem "besten" Spieler dann ein schlechter Spieler nach dem selben prinzip zugeordnet werden.
Delphi-Quellcode:
Sry für die Smileyflut...
procedure TForm1.Button6Click(Sender: TObject);
var letzter,Spieler1,Spieler2,i,i2,i3,i4,gleichcounter,rest,skill,skill2,choose:integer; check,check2,choosenname,choosenname2,choosenname3:string; begin gleichcounter:=0; if ListBox2.Items.Count mod strtoint(edit5.text) = 0 then begin choosenname2:=''; choosenname:=''; gleichcounter:=0; status.caption:='Spielerzahl passt'; for i:=0 to (ListBox2.Items.Count) do begin [color=#ff001f]check:=listbox2.items[i-1];[/color] //<--hier wird der Fehler angezeigt - ersten Namen samt Wertung holen for i2:= 1 to 4 do skill:= skill + strtoint(check[i2]); // Wertung isolieren if i<listbox2.items.count-1 then begin check2:=listbox2.items[i+1]; // Wertung des nächsten auslesen for i3:= 1 to 4 do skill2:= skill2 + strtoint(check2[i3]); // Wertung isolieren if skill=skill2 then //Wertung vergleichen gleichcounter:=gleichcounter+1 // Anzahl gleicher Wertungen else begin // sobald der nächste Spieler eine andere Wertung hat, wird unter jenen mit gleicher Wertung gelost choose:=random(gleichcounter)+1; choosenname:=ListBox2.Items.Strings[choose-1]; //choosenname ist Wertung + Name des auserwählten for i4:=6 to length(choosenname) do // Auserwählten Name wird von Wertung isoliert choosenname2:= choosenname2 + choosenname[i4]; //........ end; end; end; end else status.caption:='error'; showmessage('Unpassende Spieleranzahl!'); end; |
Re: EStringListError
Delphi-Quellcode:
Was passiert den im ersten Schleifendurchlauf, wenn i = 0 ist :gruebel:
// ...
for i:=0 to (ListBox2.Items.Count) do begin check:=listbox2.items[i-1]; //<--hier wird der Fehler angezeigt - ersten Namen samt Wertung holen // ... :arrow: Es wird auf listbox2.items[-1] zugegriffen ... MfG, Bug |
Re: EStringListError
ups,Entschuldigung, da habe ich rumprobiert und das nicht wieder umgeändert...
Nichtzdestotrotz besteht der Fehler weiterhin bei
Delphi-Quellcode:
[check:=listbox2.items[i]
|
Re: EStringListError
Delphi-Quellcode:
Was passiert den im letzten Schleifendurchlauf, wenn i = ListBox2.Items.Count ist :gruebel:
// ...
for i:=0 to (ListBox2.Items.Count) do begin check:=listbox2.items[i]; //<--hier wird der Fehler angezeigt - ersten Namen samt Wertung holen // ... :arrow: Es wird auf listbox2.items[ListBox2.Items.Count] zugegriffen obwohl es mit Null angefangen wird zu Zählen und damit ListBox2.Items.Count-1 das letzte Element ist ... MfG, Bug |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz