Naja, wichtig is ja eigentlich im Moment erstmal die exe.
Und ich kann wieder mal nur sagen, daß selbst in diesem Testprogramm der Algorithmus genau das macht, was du programmiert hast, Hallo_Thomas...
Betrachte diese 2 Fälle:
- Gebe ich als erstes eine 6 ein, ist Counter immer 0, da die ListBox eben von oben nach unten durchgegangen wird. Und da das als erstes eingegebene Element eine 6 ist, und dieses Element bei der Eingabe neuer Zahlen immer das letzte Element bleibt, wird nach der Schleife "Counter" immer 0 sein, da eben als letztes eine 6 gefunden und Counter auf 0 gesetzt wird.
- Geben ich als erstes (und vielleicht noch als 2., 3., ...) eine 1,3 oder 7 ein, stehen die immer ganz unten in der ListBox. Daher zeigt Counter immer an, wieviele 1er, 3er oder 7er eingegeben wurden, bis die erste 6 kam.
Du siehst also, so betrachtet macht dein Code, was du willst.
Hättest du mal früher etwas mehr gepostet, dann hätte man dazu auch gleich mehr sagen können. Das jetzt mal nur als Tip für die Zukunft.
Jetzt zur Lösung:
Ich gehe mal davon aus, daß du willst, daß dir angezeigt wird, wieviele 1er, 3er und 7er in der ListBox
über der letzten 6 stehen, oder? Also, wieviele
seit der letzten 6 eingegeben wurden?
Dann mußt du natürlich die ListBox auch rückwärts durchgehen:
Delphi-Quellcode:
Counter := 0;
for g := Anzeige.Count-1 to 0 do
if StrToInt(Anzeige.Items[g]) in [1,3,7] then
Inc(Counter)
else if StrToInt(Anzeige.Items[g]) in [6] then
Counter := 0;
Label6.Caption:= IntToStr(Counter) ;
PS: Gewöhn dir mal an, deinen Code etwas besser zu formatieren. Bei dir muß man immer suchen, was wozu gehört. Wenn du an bestimmten Stellen mit TAB etwas einrückst, macht das den Code viel lesbarer. Das erleichtert auch die Programmierung erheblich.