So schwer ist das Übersezen doch garnicht?
Einen großteil hätte fast jeder hinbekommen und bei den ein/zwei unklaren Stellen hätte man auch nochmal geziehlt fragen können.
Delphi-Quellcode:
function crc(add: Pointer; ): Word;
var
sum: LongInt;
begin
sum := 0;
while count > 1
do begin
Inc(sum, PWord(addr)^);
Inc(Integer(addr), 2);
Dec(count, 2);
end;
if count > 0
then
Inc(sum, PByte(addr)^);
while sum
shr 16 <> 0
do
sum = sum
and $ffff + (sum
shr 16);
result :=
not sum;
end;