📄 entities.pas
字号:
unit Entities;
interface
uses classes;
type
SybObjectname = string[30];
type TLinks = class(TObject)
public
From_Entity :SybObjectname;
From_Field :SybObjectname;
From_X :Integer;
From_Y :Integer;
Real_From_X :Integer;
Real_From_Y :Integer;
To_Entity :SybObjectname;
To_Field :SybObjectname;
To_X :Integer;
To_Y :Integer;
Real_To_X :Integer;
Real_To_Y :Integer;
end;
var EntityList :TList;
linklist :TList;
oldlinklist :TList;
First_Entity :byte;
first_link :byte;
linking :boolean;
lnk_from_entity :SybObjectname;
lnk_from_field :SybObjectname;
lnk_from_X :Integer;
lnk_from_Y :Integer;
lnk_to_entity :SybObjectname;
lnk_to_field :SybObjectname;
lnk_to_X :Integer;
lnk_to_Y :Integer;
function online(where_x,where_y :integer; var real_from_x,
real_from_y,
real_to_x,
real_to_y:integer):boolean;
function check_online(x1,y1,x2,y2,x,y :integer):boolean;
implementation
function online(where_x,where_y :integer; var real_from_x,
real_from_y,
real_to_x,
real_to_y:integer):boolean;
var i :integer;
x1,x2,
y1,y2 :integer;
begin
result:=false;
if linklist = nil then
exit;
for i:=0 to linklist.count-1 do
begin
x1:=tlinks(linklist[i]).real_from_x;
x2:=tlinks(linklist[i]).real_to_x;
y1:=tlinks(linklist[i]).real_from_y;
y2:=tlinks(linklist[i]).real_to_y;
real_from_x:=x1;
real_from_y:=y1;
real_to_x:=x2;
real_to_y:=y2;
result:=check_online(x1,y1,x2,y2,where_x,where_y);
if result then
exit;
end;
end;
function check_online(x1,y1,x2,y2,x,y :integer):boolean;
var c,m :real;
begin
result:=false;
m:= (y2 - y1) / (x2 - x1);
c:=y1 - (m * x1);
result:= (abs(((m * x) + c)-y) <= 20)
and (((x>=x1) and (x<=x2))
or ((x>=x2) and (x<=x1)))
and (((y>=y1) and (y<=y2))
or ((y>=y2) and (y<=y1)));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -