Ah OK. Das is halt immer das Problem. Ständig stellen die Leute Fragen und gehen davon aus, daß jeder schon im Voraus genau weiß, wie das ganze aufgebaut is. Aber ohne Informationen stochert man halt nur im Dunklen rum...
So, wie immer, wenn mir jemand erzählen will, daß ein Code nicht funktioniert, in dem ich keinen Fehler finden kann, hab ich das mal selber ausprobiert. Und ich kann nur sagen: Wo siehst du das Problem? Bei mir funktioniert das.
Nur verstehe ich den Aufbau der Funktion nicht ganz.
- Da fehlen Ends am Schluß...
- Warum aktualisierst du noch in der Schleife das Label? Angezeigt wird sowieso nur die letzte Belegung von Counter, da das Label mit dem Zeichnen nicht so schnell nachkommt.
- Warum arbeitest du mit Sets? Geht doch zumindest beim Teil mit der 6 einfacher mit nem String.
Hier mal etwas umgearbeitet, und die funktioniert bei mir einwandfrei - wobei sie das vorher auch schon gemacht hast. Sicher, daß du nicht einfach irgendetwas falsch gezählt hast?
Delphi-Quellcode:
Counter := 0;
for g := 0 to ListBox1.Items.Count-1 do
Case ListBox1.Items[g][1] Of
'1','3','7': inc(Counter);
'6' : Counter := 0;
End;
Label6.Caption:= IntToStr(Counter) ;
Ich hab jetzt hier mal mit Case gearbeitet. Damit ersparst du dir das IntToStr und die Sets. Allerdings mußte ich hierfür den Str durch das [1] in ein Char umwandeln. Das sollte aber nichts ausmachen, da ich mal davon ausgehe, daß sowieso nur Zahlen <= 9 benutzt werden, oder? Falls nicht, dann machs einfach wieder so:
Delphi-Quellcode:
Counter := 0;
for g := 0 to Anzeige.Items.Count-1 do
If StrToInt(Anzeige.Items[g]) in [1,3,7] Then
inc(Counter)
else
If Anzeige.Items[g] = '6' Then
Counter := 0;
Label6.Caption:= IntToStr(Counter) ;