Autor Beitrag
Barret
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 156
Erhaltene Danke: 1

Win XP
D7 Ent
BeitragVerfasst: Di 24.01.06 17:24 
ausblenden Delphi-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:
      
      while StringGrid.RowCount > 1 do
        begin
          iAuslagerung := Random(StringGrid.RowCount);

          if (StringGrid.Cells[1, iAuslagerung] = 'man 1') then
            if (StringGrid.Cells[0, iAuslagerung] = 'chance') then
              for i := Image.Left downto 100 do
                begin
                  Image.Left := i;
                  Sleep(50);
                end
            else
              for i := Image.Left downto 50 do
                begin
                  Image.Left := i;
                  Sleep(50);
                end;

          if not (iAuslagerung = StringGrid.RowCount) then
            for i := iAuslagerung to StringGrid.RowCount - 1 do
              StringGrid.Rows[i] := StringGrid.Rows[i + 1];  //alle Einträge eine Zeile hochzihen

          StringGrid.RowCount := StringGrid.RowCount - 1;

          Image.Left := ((Image2.Width div 2) + Image2.Left) - (Image.Width div 2);
        end;



Bei dem Quelltext hab ich das Problem, dass ich zu keinem Ergebnis komme (Das Programm stürtzt ab!!!).
Er soll die Felder des Grids auslesen und dann je nach dem die Anweisung durchführen. Danach dann die Inhalte des Grids verschieben und die Länge um eins subtrahieren. Er soll aufhören, wenn alle Einträge abgearbeitet sind.

Ich seh keinen Fehler und bin über Hilfe verbunden.
mfg

_________________
Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 24.01.06 19:41 
wo stürtzt denn dein Prog genau ab?

auf die schnelle sehe ich nur
ausblenden Delphi-Quelltext
1:
2:
3:
1)          if not (iAuslagerung = StringGrid.RowCount) then  
2)            for i := iAuslagerung to StringGrid.RowCount - 1 do  
3)              StringGrid.Rows[i] := StringGrid.Rows[i + 1];  //alle Einträge eine Zeile hochzihen


1) wird durch das Random sowieso nie eintreten.
2) die Schleife läuft bis Rowcount-1 und in der Schleife 3) greifst du dann auf Rowcount-1+1 zu, dieses Item gibt es nicht.
Die Schleife darf nicht bis zum letzten, sondern nur bis zum vorletztem Item Rowcount-2 laufen.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Barret Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 156
Erhaltene Danke: 1

Win XP
D7 Ent
BeitragVerfasst: Di 24.01.06 19:57 
Big THX @ Keldorn! Es funktioniert!!! *jubel jubel, freu freu*
Die erste Zeile hatte ich mal reingeschrieben aus testzwecken. Das das duch Random eigentlich ausgeschlossen is war mir so weit eigentlich klar.

Mein Fehler war es aber einen Index hoch zu zihen der gar nich dar is.
Wie du gesagt hast nich minus eins sondern zwei.

Hätt bestimmt noch ne Zeit gesessen umdas zu lesen.

_________________
Wir könnten ja, wenn wir wollten aber wir wollen ja nicht.
It´s not a bug, it´s a feature.