vorweg euch allen einen entspannten 2ten Advent.
in einem meiner aktuellen Projekten habe ich auf mir aktuell unbekannten Gründen ein Problem mit dem TTimer.
Aufgabe:
ich will eine Art Lauflicht erstellen, welches aktuell aus 10 x 40 Pixel besteht.
Nominell keine große Sache, würde ich meinen, aber aus einem mir unerklärlichen Grund braucht mein Timer 2 Sekunden, für einen Durchlauf, obgleich der Intervall auf 250ms eingestellt ist.
wenn ich mir die Funktion anschaue, welche in der Summe nur eine aktive Schleife fährt wundert es mich doch schon arg, das ein Programm für diesen Durchlauf so arg lange braucht.
Code: Alles auswählen
procedure TForm1.Timer1Timer(Sender: TObject);
var
a, b : byte;
begin
if bMatrix.first then begin
for a := 1 to 10 do begin
if bMatrix._on[bMatrix.b, a] then
Matrix[40, a].State := lsOn
else Matrix[40, a].State := lsDisabled;
bMatrix.first := false;
end;
end else begin
inc(bMatrix.b);
for a := 2 to 8 do begin
for b := 1 to 39 do
// eine reihe vorrücken
Matrix[b, a].State := Matrix[b + 1, a].State
if bMatrix._on[bMatrix.b, a] then
Matrix[40, a].State := lsOn
else
Matrix[40, a].State := lsDisabled;
end;
end;
dec(bMatrix.c);
if bMatrix.b = 40 then
Timer1.Enabled := false;
end;
Code: Alles auswählen
// Sichtbare Matrix
Matrix : array[1..40, 1..10] of TAdvLed;
// Backup Matrix, nur für Lauflicht funktion
bMatrix : record
_on : array[1..40, 1..10] of boolean;
b, c : byte;
first : boolean;
end;
Sieht jemand von euch gegebfalls etwas, was ich dabei übersehe?
Danke für eure Aufmerksamkeit und einen schönen Sonntag euch allen.