Показать сообщение отдельно
Старый 17.12.2008, 18:47   #35
Местный
 
Аватар для PanAm
 
Регистрация: 18.01.2008
Сообщений: 286
Сказал Спасибо: 24
Имеет 133 спасибок в 80 сообщенях
PanAm
По умолчанию

хз, тут у xkorа наверно понятней
http://coderx.ru/showpost.php?p=19192&postcount=12
delphi Код:
procedure AddChecksum(var data:array of char; position: Word); var   i,k:Word; begin   k := (position div 4)-1;   for i := 0 to k do     PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^; end;

Добавлено через 2 часа 11 минут
Или вот из la2_client_emu
delphi Код:
procedure AddCheckSumm(var data: array of byte; len: integer); type trec = record       t0: byte;       t1: byte;       t2: byte;       t3: byte;     end; var chksum: Longword;     i: integer;     ecx: Longword;     t: trec; begin   if length(data)<len+4 then exit;   chksum := 0;   i := 0;   while i < len do begin       t.t0 := data[i];       t.t1 := data[i + 1];       t.t2 := data[i + 2];       t.t3 := data[i + 3];       ecx := Longword(t);       chksum := chksum xor ecx;       i := i + 4;   end;   t := trec(chksum);   data[len]:=t.t0;   data[len+1]:=t.t1;   data[len+2]:=t.t2;   data[len+3]:=t.t3; end;

Последний раз редактировалось PanAm, 17.12.2008 в 18:47. Причина: Добавлено сообщение
PanAm вне форума   Ответить с цитированием
За это сообщение PanAm нажился спасибкой от: