Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fehlermeldung bei Quiz


Müscha - Sa 25.03.06 12:39
Titel: Fehlermeldung bei Quiz
Guten Morgen Leute,

Ich programmiere ein Quiz und alles läuft relativ gut, nur bei der vorletzten Frage kommt dieser Fehler:


Im Projekt Project1.exe ist eine Exception der Klasse EStringListError aufgetreten. Meldung: `Listenindex überschreitet das Maximum (0)´. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.

Was bedeutet das? Woran kann das liegen?


Ich hab mir paar Gedanken gemacht, ich benutze eine TStringList. Vielleicht hat das ja nur einen geringen Speichervolumen. Oder bedeutet das was mit einem Memofeld?

Ich schick mal den quelltext mit, wo das Programm eine neue Frage sucht und ich TStringlist verwende:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
case e of
    1: val := 100;
    2: val := 200;
    3: val := 300;
    4: val := 500;
    5: val := 1000;
    6: val := 2000;
    7: val := 4000;
    8: val := 8000;
    9: val := 16000;
    10: val := 32000;
    11: val := 64000;
    12: val := 125000;
    13: val := 500000;
    14: val := 1000000;

end;



sl := TStringList.Create;



  // erst alle zeilen suchen, die suchkriterium entsprechen:
  // auf 1. datensatz gehen

  Table1.First;

    // alle datensätze abarbeiten...

  while not Table1.Eof do begin

    // wenn suchkriterium gefunden: datensatz-nummer merken

    if Table1.Fields[6].AsInteger = val then
      sl.Add(Inttostr(Table1.Fields[5].Asinteger));
    Table1.Next;
  end;

  // aus den gefundenen datensätzen einen zufällig auswählen:

    randomize;
  i := random(sl.Count);

  // zum ausgewählten datensatz springen:
  Table1.First;
  Table1.MoveBy(StrtoInt(sl[i])-1);


    sl.free;



Danke erstmal!


Danniolo - Sa 25.03.06 12:44

probier ma:

Delphi-Quelltext
1:
i := random(sl.Count-1);                    


Darn sollte es liegen


Müscha - Sa 25.03.06 12:47

jetzt hat er den selben Fehler nur statt der 0 eben so eine große Zahl.

Im Projekt Project1.exe ist eine Exception der Klasse EStringListError aufgetreten. Meldung: `Listenindex überschreitet das Maximum (1090979276)´. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.



Was bedeutet der Fehler denn überhaupt?


Danniolo - Sa 25.03.06 13:02

Die Fehlermeldung bedeutet, dass ein Item von einer StringList aufgerufen werden soll, das garnicht existiert.


Born-to-Frag - Sa 25.03.06 13:05

user profile iconDanniolo hat folgendes geschrieben:
probier ma:

Delphi-Quelltext
1:
i := random(sl.Count-1);                    


Darn sollte es liegen


random(sl.count) ist schon richtig...


Müscha - Sa 25.03.06 13:11

Danke!!!!!!!!!!!!!!!!!!!!!!!

Hat wirklich nich existiert, hatte noch keine Millionenfrage angelegt!


DANKESCHÖN nochmal!!!!!!!!!!