AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

EStringListError

Ein Thema von Spynx · begonnen am 8. Mai 2008 · letzter Beitrag vom 8. Mai 2008
Antwort Antwort
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#1

EStringListError

  Alt 8. Mai 2008, 23:12
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;
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: EStringListError

  Alt 8. Mai 2008, 23:14
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
Frederic H.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: EStringListError

  Alt 8. Mai 2008, 23:15
Oder lass die Schleife in die andere Richtung laufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#4

Re: EStringListError

  Alt 8. Mai 2008, 23:19


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!!!
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#5

Re: EStringListError

  Alt 8. Mai 2008, 23:22
Hi,

Die Elemente kopieren geht mit

ListBox2.Items.Assign(ListBox1.Items); Siehe Delphi-Referenz durchsuchenTPersistent.Assign

Über Delphi-Referenz durchsuchenClear (haben viele Komponenten) löschst du den Inhalt.

Und in der Schleife die Edits jedesmal zu leeren (was übrigens auch mit Delphi-Referenz durchsuchenClear geht) ist irgendwie sinnlos, oder? Einmal leeren reicht doch auch.

Und bitte mach nicht so eine Smiley-Flut.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#6

Re: EStringListError

  Alt 8. Mai 2008, 23:23
[OT] Ach, was Smilieflut angeht hatten wir schon schlimmere. [/OT]
Frederic H.
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#7

Re: EStringListError

  Alt 8. Mai 2008, 23:38
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:
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;
Sry für die Smileyflut...
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

Re: EStringListError

  Alt 8. Mai 2008, 23:50
Delphi-Quellcode:
// ...
  for i:=0 to (ListBox2.Items.Count)
     do begin
        check:=listbox2.items[i-1]; //<--hier wird der Fehler angezeigt - ersten Namen samt Wertung holen
// ...
Was passiert den im ersten Schleifendurchlauf, wenn i = 0 ist
Es wird auf listbox2.items[-1] zugegriffen ...

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#9

Re: EStringListError

  Alt 8. Mai 2008, 23:53
ups,Entschuldigung, da habe ich rumprobiert und das nicht wieder umgeändert...

Nichtzdestotrotz besteht der Fehler weiterhin bei
[check:=listbox2.items[i]
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

Re: EStringListError

  Alt 8. Mai 2008, 23:59
Delphi-Quellcode:
// ...
  for i:=0 to (ListBox2.Items.Count)
     do begin
        check:=listbox2.items[i]; //<--hier wird der Fehler angezeigt - ersten Namen samt Wertung holen
// ...
Was passiert den im letzten Schleifendurchlauf, wenn i = ListBox2.Items.Count ist
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
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:55 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