BlockSize erhöhen?
Ich denke mal das ist grade dafür da, um den gleichzeitig verwendeten Speicher zu begrenzen/partitionieren?
Gibt es nach der Schleife noch eine Behandlung für den "Rest"? (kleiner als Blocksize)
Delphi-Quellcode:
if UInt32(DataSize) >= BlockSize then // falls Absorb bei Size=0 nicht abraucht, dann könnte man das IF auch weglassen
begin
Absorb(Pointer(@Data), (UInt32(DataSize) div BlockSize * BlockSize) * 8); // wenn BlockSize immer eine 2er-Potenz ist, dann könnte man auch einfach eine Bitmaske drüberegen/ANDen)
DataSize = {Int32}(UInt32(DataSize) mod BlockSize); // DateSize-Typ? um keinen eventuellen Überlaufcheck-Code vom Compiler reinzubekommen
end;