Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции R50.SYSOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции R50.SYSOP с датами от 13 Jul 13 00:00:02 до 13 Jul 13 00:00:02, всего сообщений: 14446
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 10405 из 14446 ====================================== R50.SYSOP =
От   : Dmitriy Romanov                  2:6078/1           16 Sep 20 20:37:12
Кому : Ivan Novikov                                        16 Sep 20 20:37:12
Тема : Разыскивается поинтлистчекер
FGHI : area://R50.SYSOP?msgid=2:6078/1+5f625c9f
На   : area://R50.SYSOP?msgid=2:5080/31.1+5f6259c2
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://R50.SYSOP?msgid=2:5080/31.1+5f6381bc
==============================================================================

Приветики, Ivan!


Писал как-то Ivan Novikov к Alexey Fayans  примерно 16 Сен 20  в 23:10
А я смотрю и фигею.

IN> А вот не собралось. Там один из юнитов, отвечающий за подсчёт CRC-16,
IN> написан аж на ассемблере частично. Причём с командами реального
IN> режима. Вывод - исходники какие-то неполные или неверные (по крайней мере
IN> частично)
Ага, я посмотрел таки туда, нашел.

IN>  Вот думаю - искать исходники для подсчёта CRC-16 строчной
IN> переменной, забить на совместимость и воткнуть туда штатную для
IN> нынешнего
IN> паскаля CRC-32, или выпилить вообще подсчёт чексуммы, поскольку всё равно
IN> очень мало кто пользуется (судя по содержимому поинтлистов различных сетей).
Насчет поинтлистов не скажу, в мейлере у меня вот есть две штуки, какая из них подойдет - попробуй методом тыка определить.

function CRC16B(var s:ansistring):word;
type b = array[1..32000] of byte;
var
        crc : longword;
        t,r : word;
begin
        crc:=0;

        if s<>'' then for t:=1 to length(s) do
        begin
                crc:=crc xor byte(s[t]) shl 8;
                for r:=1 to 8 do
                if (crc and $8000)>0 then
                        crc:=((crc shl 1) xor $1021)
                else
                        crc:=(crc shl 1);
        end;
        CRC16B:=(crc and $FFFF);
end;

function CRC16C(s:ansistring;init:word):word;overload;
var     //b:array[0..255] of word;
        crc : dword;
        i:integer;
function tbl(i:byte):word;
var     t,r : word;
begin
        r:=i;
        for t:=1 to 8 do begin
                if r and 1 <>0 then r:=(r shr 1) xor $8408
                 else r:=(r shr 1);
        end;
        result:=r;
end;
begin
        crc:=init;
        if s<>'' then for i:=1 to length(s) do begin
                crc:=tbl((crc xor byte(s[i])) and $FF) xor ((crc shr 8));
        end;
        result:=not(crc and $FFFF);
end;

function CRC16C(s:ansistring):word;overload;
begin
        result:=CRC16C(s,$FFFF);
end;



AF>>  Только у меня вопрос - на кой хрен здесь 64-битность?
IN> Писал же - чтоб не тащить в системе набор либ для совместимости с
IN> 32-битностью.
А его разве надо тащить? Он вроде искаропки работает. А вот для 16-битных уже надо тащить. Или у тебя не винда?

      Hа сем разрешите письмо закончить.   Elec (RA2FDR)
--- NoSFeRaTU's GoldED+/W32-MINGW 1.1.5-b20090603
* Origin: В свинарнике не стыдно быть свиньей (2:6078/1)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.119101 секунды