views:

153

answers:

1

The word has it FillChar is about the fastest way to fill a patch of memory with bytes of the same value (not zero, for that there's ZeroMemory), but is there an equivalent to fill memory with a sequence of the same (four byte) integer or cardinal value? Something like FillInt or FillLongWord?

+4  A: 

FillDWord is in some Pascal implementations (FreePascal here), don't know if it's in Delphi.

Maybe some simple assembler implementation?

procedure FillDWord( var Destination; Count: Integer; Value: DWord ); 
assembler; register;
asm
  push edi
    mov  edi, eax  // assign Destination
    mov  eax, ecx  // assign Value
    mov  ecx, edx
    rep  stosd
  pop edi
end;

... or some asm expert could give a better one...

You could also look at the implementation in FreePascal.

Kornel Kisielewicz
FillDWord is defined in the Grids unit in Delphi 2010, and subsequently used once in TCustomGrid.Paint (their implementation is very similar to yours). You can also use FillMemory in the Windows unit if you're okay with using a single byte value, rather than a specific 4-byte value.
Michael Madsen
I can't figure out a better place than the Grids unit... wait a second, maybe Controls is better... ^_^
jachguate