📄 lib.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 + -