两个同一类型的Record变量怎样判断他们是否相等!(50分)

  • 主题发起人 主题发起人 tank37
  • 开始时间 开始时间
T

tank37

Unregistered / Unconfirmed
GUEST, unregistred user!
两个同一类型的Record变量怎样判断他们相等!
如:
x1,x2:TRect;
怎样判断x1和x2相等
 
...........
 
每个记录均判断;
或者像你说得TRect,你可以转换为HRGN,判断区域是否相等。
 
comparestr 函数 比较字符串(区分大小写)
ansicomparestr 函数 比较字符串(区分大小写)
ansicomparetext 函数 比较字符串(不区分大小写)
 
相等在理论上应该是两个指针指向同一个对象,同一内存区域,但对于基本数据类型应该是
数值相等

但事实上程序中咱们只关心他们的数值相不相等。所以你需要拿record中的数据一个一个
进行比较
 
记录中的每个元素都要比较吧,如果是你自己定义的话
 
一般情况下直接比较两个记录型量好象没多大的意义,正如chenlh说,我们只关心他们的
成员数值是否相等,如果一定要比较可以试我的这个方法:逐个Byte内存比较法

var
a,b:TRect;
a1,b1:pointer;
i:integer;
begin
a.Left:=10;
a.top:=20;
a.Right:=30;
a.Bottom:=40;
b.Left:=110;
b.top:=120;
b.Right:=130;
b.Bottom:=140;
a1:=pointer(@a);
b1:=pointer(@b);
for i:=1 to sizeof(Trect)-1 do
begin
ShowMessage( IntToStr(byte(a1^)));
ShowMessage( IntToStr(byte(b1^)));
integer(a1):=integer(a1)+1;
integer(b1):=integer(b1)+1;
end;
end;
 
如是变体记录呢?
 
判断内存相等就行了。CompareMem?
 
还是判断内存比较方便
 
不管你是什么记录或变量,都视为一块内存区域,
 
后退
顶部