1. Wenn du dich schon in einer Methode von TForm1 befindest, kannst du Form1 weglassen. Dann bekommst du auch keine Probleme bei mehreren Instanzen.
2. "Counte": soll das nicht Counter heißen
?
3. Das lässt sich extrem verkürzen:
Delphi-Quellcode:
var s: string;
begin
for i := 0 to Anzeige.Count - 1 do
begin
s := Anzeige.Items[i];
case s[Length(s)] of
'0'..'6':
if StrToInt(s) < 40 then
Inc(Counte(StrToInt(s[Length(s)])))
else
Counte(StrToInt(s[Length(s)])) := 0;
'7'..'9':
if StrToInt(s) < 30 then
Inc(Counte(StrToInt(s[Length(s)])))
else
Counte(StrToInt(s[Length(s)])) := 0;
end;
end;
for i := 0 to 9 do
(FindComponent('Label'+IntToStr(i+192)) as TLabel).Caption:=IntToStr(Counte[i]);
[edit]So sollte es stimmen:
Delphi-Quellcode:
for i := 0 to Anzeige.Count - 1 do
begin
s := Anzeige.Items[i];
Index := StrToInt(s[Length(s)]);
for ii := 0 to 9 do
if (Index = ii) and (Counte[Index] < 30 + Integer(Index <= 6) * 10) then
Inc(Counte[Index])
else
Counte[Index] := 0;
end;
Gut, das mit dem Boolean zu Integer ist etwas verkünstelt, ich war zu faul, noch ein case einzufügen
.