델파이에서 포인터,비트계산 등을 해 본적이 없어서 아래의 C 함수를 델파이로 변환하려니 막막합니다..
오늘중으로 마무리를 해야하는 프로그램에서 중요한 부분인데 전혀 진척이 없습니다..
아래의 C함수를 데리파이 소스로 변환해 주시면 감사드리겠습니다..
수고하세요..
int get_crc(char *ptr, int *count)
{
int crc = 0, i;
while (--*count >= 0) {
crc = crc ^ (int) *ptr++ << 8;
for (i = 0; i < 8; ++i) {
if (crc & 0x8000)
crc = crc << 1 ^ 0x1021;
else
crc = crc << 1;
}
}
return (crc & 0xFFFF);
}
아래와 같이 하면 됩니다.
============================================================
function TForm1.get_crc(ptr : pChar; count : pInteger) : Integer;
var
crc, i : Integer;
begin
while ( count^ >= 0 ) do
begin
crc := 0;
crc := crc xor (integer(ptr^) shl 8);
for i:=1 to 8 do
begin
if (crc and $8000) <> 0 then
crc := (crc shl 1) xor $1021
else
crc := (crc shl 1);
end;
dec(count^);
end;
result := (crc and $FFFF);
end;