NEIN, weil es effektiv SO arbeitet:
Delphi-Quellcode:
var
Counter: Byte = 0;
procedure DrawDots (x, y: Integer; c: TCanvas); StdCall;
begin
Es wird
ein BIT in jedem Durchlauf reihum durch das Byte geschoben ... ähnlich einem ROL (wegen dem IF =0)
Delphi-Quellcode:
var
Counter: Byte = 0;
procedure DrawDots (x, y: Integer; c: TCanvas); StdCall;
begin
counter := counter shl 1;
if counter = 0 then counter := 1;
case counter of
1, 2, 4, 8 : C.pixels[x,y] := clWhite;
else
C.pixels[x, y] := clBlack;
end;
end;
Delphi-Quellcode:
var
Counter: Byte = $1;
procedure DrawDots (x, y: Integer; c: TCanvas); StdCall;
begin
case counter of
1, 2, 4, 8 : C.pixels[x,y] := clWhite;
else
C.pixels[x, y] := clBlack;
end;
counter := counter rol 1;
end;
Delphi-Quellcode:
var
Counter: Byte = 0; // oder Integer oder egal (weil alles durch 8 teilbar)
procedure DrawDots (x, y: Integer; c: TCanvas); StdCall;
begin
Inc(Counter)
if not Ord(Counter shr 2) of
C.pixels[x,y] := clWhite;
else
C.pix
Zusammen mit dem CASE ergibt es
* es wird von 1 bis 8 gezählt (1 Byte = 8 Bits)
* und wenn es 1 bis 4 ist, wird es weiß
-> 4 Mal Weiß, 4 Mal Schwarz, 4 Mal Weiß, 4 Mal Schwarz usw.
(mein Beispiel oben zählt von 0 bis 7, weil es so einfacher zu berechnen ist, aber effektiv kommt es auf's Gleiche raus)