Das ist schon klar. Problem ist folgendes. Wenn Du das zweite mal die 5 drückst, wird der Anweisungsblock aber immer noch 8 mal durchlaufen (1-4 und 6-9)...
Aber wenn Du die gedrückten Tasten in einem Array halten willst, kannst Du auch folgendermassen vorgehen:
Code:
procedure Tform1.keyw(key: word);
var
counter: integer;
begin
for counter := 1 to 9 do begin
if Keypressed[counter] := 0 then begin
Keypressed[counter] := Key;
break;
end;
end;
end;
Du benötigst dann ein Array Keypressed, das ein array[1..9] of integer ist. Die einzelnen Felder werden mit 0 initialisiert. So kannst Du immer im ersten Feld, das eine Null beinhaltet, die aktuell gedrückte Taste speichern...
Und Deine Abfrage würden dann lauten:
Code:
for i := 1 to 9 do
if Keypressed[i] = 0 then
begin
Matthias