⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elcrc32.pas

📁 Delphi编写的一个支持语法高亮显示和很多语言的文本编辑器
💻 PAS
字号:

{====================================================}
{                                                    }
{   EldoS Visual Components                          }
{                                                    }
{   Copyright (c) 1998-2000, EldoS                   }
{                                                    }
{====================================================}

{$I ElPack.inc}

unit ElCRC32;

interface

uses Windows;

function CRC32(crc : longint; const c : byte) : longint;

function CRCBuffer(InitialCRC : longint; Buffer : Pointer; BufLen : integer) : Longint;
function CRCStr(Str : string) : longint;

implementation

const
  CRC32_POLYNOMIAL = $EDB88320;

var
  Ccitt32Table : array[0..255] of longint;

function CRCBuffer(InitialCRC : longint; Buffer : Pointer; BufLen : integer) : Longint;
var
  i, c, j : integer;
  P : PByte;
begin
  c := InitialCRC;
  P := PByte(Buffer);
  for i := 0 to BufLen -1 do    { Iterate }
  begin
    c := crc32(c, P^);
    //P := PChar(j);
    Inc(P);
  end;    { for }
  result := c;
end;

function CrcStr(Str : string) : longint;
var
  i, l, c : integer;
begin
  l := length(Str);
  c := 0;
  for i := 1 to l do
    c := crc32(c, byte(str[i]));
  result := c;
end;

function crc32(crc : longint; const c : byte) : longint;
begin
  crc32 := (((crc shr 8) and $00FFFFFF) xor (Ccitt32Table[(crc xor c) and $FF]));
end;

procedure BuildCRCTable;
var
  i, j, value : DWORD;
begin
  for i := 0 to 255 do
  begin
    value := i;
    for j := 8 downto 1 do
    begin
      if ((value and 1) <> 0) then
        value := (value shr 1) xor CRC32_POLYNOMIAL
      else
        value := value shr 1;
    end;
    Ccitt32Table[i] := value;
  end
end;

initialization
  BuildCRCTable;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -