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

📄 lib.pas

📁 16位与32位整数转换 整数正负反转 基偶数判断
💻 PAS
字号:
unit Lib;

interface

uses windows;

procedure StrTodev(var dev: array of SmallInt; index, cnt: integer; source:string);
function DevToStr(var dev: array of SmallInt; index, cnt: integer): string;
function ReadDrvDWord(var dev: array of SmallInt; index: integer):DWORD;
function ReadDrvInt(var dev: array of SmallInt; index: integer):Integer;
procedure WriteDrvDword(var dev: array of SmallInt; index: integer; source: Integer);
procedure XY_Swap(var X,Y:Double);
function D32(var P):Integer;

implementation
//==============================================================================
procedure StrTodev(var dev: array of SmallInt; index, cnt: integer; source:string);
var
  n1, n2, n3, n4: integer;
begin
  n2 := index;
  n3 := length(source);
  for n1 := 1 to cnt do
  begin
    if (n1 mod 2) = 1 then
    begin
      if (n3 > 0) and (n1 <= n3) then
        n4 := ord(source[n1])
      else
        n4 := $20;
      if n1 <= n3 then
        dev[n2] := dev[n2] and $FF00 or n4
      else
        dev[n2] := dev[n2] and $FF00;
    end
    else
    begin
      if n1 <= n3 then
      begin
        if (n3 > 0) and (n1 <= n3) then
          n4 := ord(source[n1])
        else
          n4 := $20;
        dev[n2] := dev[n2] and $00FF or (n4 shl 8);
      end
      else
        dev[n2] := dev[n2] and $00FF;
      inc(n2);
    end;
  end;
end;
//==============================================================================
function DevToStr(var dev: array of SmallInt; index, cnt: integer): string;
var
  n1, n2: integer;
begin
  result := '';
  n2 := index;
  for n1 := 1 to cnt do
  begin
    if (n1 mod 2) = 1 then
    begin
      result := result + chr(dev[n2] and $FF);
    end
    else
    begin
      result := result + chr(dev[n2] shr 8);
      inc(n2);
    end;
  end;
end;
//==============================================================================
function ReadDrvDWord(var dev: array of SmallInt; index: integer):DWORD;
var
  p1, p2 ,p3: DWORD;
  n1: Integer;
begin
  n1 := index;
  p1 := (DWORD(dev[n1+1]) shl 16) and $FFFF0000;
  p2 := DWORD(dev[n1]) and $0000FFFF;
    p3:= p1 or p2;
  Result := p3;
end;
//==============================================================================
function ReadDrvInt(var dev: array of SmallInt; index: integer):Integer;
var
  p1, p2 ,p3: DWORD;
  n1: Integer;
begin
  n1 := index;
  p1 := (DWORD(dev[n1+1]) shl 16) and $FFFF0000;
  p2 := DWORD(dev[n1]) and $0000FFFF;
  p3:= p1 or p2;
  Result := Integer(p3);
end;
//==============================================================================
procedure WriteDrvDword(var dev: array of SmallInt; index: integer; source: Integer);
var
  p1, p2: WORD;
  n1: Integer;
  n2: DWORD;
begin
  n1 := index;
  n2 := DWORD(source);
  p1 := WORD((n2 shr 16) and $0000FFFF);
  p2 := WORD(n2 and $0000FFFF);
  dev[n1+1] := p1;
  dev[n1] := p2;
end;
//==================================================================================
procedure XY_Swap(var X,Y:Double);
var
	Tmp:Double;
begin
	Tmp:=X;
  X:=Y;
  Y:=Tmp;
end;
//==================================================================================
function D32(var P):Integer;
begin
	Result:=Integer(P);
end;
//===================================================================================

end.

⌨️ 快捷键说明

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