Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизКак переделать код расчета CRC32? Найти похожие ветки
← →
Aleksandr. (2004-08-05 14:41) [0]У меня раньше был асмовский код и паскалевский код. Но понадобилось написать ряд библиотечек для сайта на Delphi .Net, а в ней не поддерживаются ни asm ни absolute. Паскалевский код
function CalculateCRC32(var buffer; const size:integer): cardinal;
var
i : integer;
data : array [0..0] of byte absolute buffer;
begin
result:=$FFFFFFFF;
for i:=0 to size-1 do result:=(result shr 8) xor (CRC32Table[byte(result) xor data[i]]);
result:=result xor $FFFFFFFF
end;
Вот без поддержки absolute мне никак не получается свести data с buffer. Как это можно сделать еще? Delphi .Net вообще какая-то долбанутая с поддержкой - в хелпе у нее все есть, расписывается, для чего нужны asm, absolute, а компилятор нафиг посылает, утверждает, что инвалидная директива.
← →
REA © (2004-08-05 14:46) [1]Что-то типа такого:
Var
Data: PByteArray;
Data := Buffer;
← →
Aleksandr. (2004-08-05 15:01) [2]Шиш, пробовал я такое. Не разрешает .Net нетипизированный присваивать массиву байт. А если наколоть ее и сделать так:
Data:=PByteArray(Buffer),
то она скажет вот в этой строчке
result:=(result SHR 8) XOR (CRC32Table[byte(result) XOR data[i]]);
что array type required.
← →
Aleksandr. (2004-08-05 15:28) [3]Усе, привел падлу. Засчитала...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.037 c