Versuche mal
lPixel.rgbGreen
Delphi hat hier standardmäßig eine implizite Dereferenzierung, wenn man auf ein Feld oder Methode eines Record-Pointers zugreift.
Vielleicht funktioniert es mit dem Standard-Verhalten besser, als wenn du es explizit/selber dereferenzierst.
oder
Delphi-Quellcode:
var
p32: PByte;
//lPixel: PRGBQuad;
begin
...
while X < bm.bmWidth do
begin
M := X;
var lPixel := PRGBQuad(integer(p32) + X * sizeof(cardinal));
while X < bm.bmWidth do
Ach ja, wenn dein Code mal knallt, weil du Integer(p32) anstatt NativeInt(p32) oder IntPtr(p32) machst, dann zurecht. (ebenso bei integer(bm.bmBits) )
Zitat:
hat auch 64Bit funktioniert
dann hattest zu viel du Glück, aber irgendwann ist es zuende.
lPixel := p32 + X;
(falls niemand die Pointer-Arithmetic deaktiviert hat
)
Wo ist K definiert?
Was macht MakeColor? Und ich seh da ein
0
... Ist dann
and $FFFFFF
wirklich nötig?
RGB