für sowas gibt es den Debuger ... da schaut man wo es knallt und auch gleich warum
da fällt dann auf, daß es hier knallt
Delphi-Quellcode:
SL.Delete(i);
SL.Delete(i+1); <<<
die aktuellen Werte sind da
Code:
i = 3
0: 1
1: +
2: 2
3: *
4: 3
Code:
0: 1
1: +
2: 6 << durch SL[i-1]:=...; geändert
<< der alte Wert an Index 3 wurde durch SL.Delete(i); gelöscht
3: 3 << hat jetzt den Index 3 und nicht mehr 4
ja und nun versuchts du SL.Delete(i + 1);
i+1 = 4 und die 4 gibt es nicht mehr ... also da auch nur SL.Delete(i);
PS: das i := -1; ist jetzt falsch, da war, bevor ich dort mal das ELSE einfügt,
denn vorher wurde nach der Schleife das i:=i+1; noch mit ausgeführt und -1+1=0 ... also der Anfang, aber wegen des Else muß da jetzt auch stattdessen i:=0; hin (hab es oben mal editiert)