//通过比较内存实现
//CompareMem()procedure TForm1.Button1Click(Sender: TObject);
var
A, B: TRect;
begin
A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 4);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.1 相等')
else ShowMessage('No.1 不相等'); A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 5);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.2 相等')
else ShowMessage('No.2 不相等');
end;procedure TForm1.Button2Click(Sender: TObject);
type
TMyRecord = record //记录类型大小必须固定
a1: Integer;
a2: ShortString; //不能用动态长度的类型//即:不能用string
end;
var
Rec1: TMyrecord;
Rec2: TMyrecord;
begin
Rec1.a1 := 1;
Rec1.a2 := '1'; Rec2 := rec1;
Rec1.a1 := 1;
if CompareMem(@Rec1, @Rec2, SizeOf(TMyRecord)) then
ShowMessage('No.3 相等')
else ShowMessage('No.3 不相等');
end;
//CompareMem()procedure TForm1.Button1Click(Sender: TObject);
var
A, B: TRect;
begin
A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 4);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.1 相等')
else ShowMessage('No.1 不相等'); A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 5);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.2 相等')
else ShowMessage('No.2 不相等');
end;procedure TForm1.Button2Click(Sender: TObject);
type
TMyRecord = record //记录类型大小必须固定
a1: Integer;
a2: ShortString; //不能用动态长度的类型//即:不能用string
end;
var
Rec1: TMyrecord;
Rec2: TMyrecord;
begin
Rec1.a1 := 1;
Rec1.a2 := '1'; Rec2 := rec1;
Rec1.a1 := 1;
if CompareMem(@Rec1, @Rec2, SizeOf(TMyRecord)) then
ShowMessage('No.3 相等')
else ShowMessage('No.3 不相等');
end;
解决方案 »
- FastReport 问题
- DBgrideh 按键响应AfterScroll
- 如果公司的宽带是公网IP,我在家上网,我的程序是否可以通过指定公司的公网IP来访问它的sql2000数据库(个人版)。
- OleContainer1中调用的EXCEL激活后,工具条上的“保存”,“打印”,“打印预览”按钮怎么不可以用
- 怎样求得不规则图形内的像素数?
- 菜菜的ado问题
- 我想在ie的右键菜单中增加一项,执行一个脚本对ie中选择的文本进行处理,如flashget目录中的jc_link.htm,该怎么取得文本,好像不能直接
- 在输入框中刷卡,记录刷卡时间,但是当来回刷卡时,会在刷卡时间字段记录中出现相同时间。例如来回刷卡,出现两条一模一样的记录:卡号“111”,刷卡时间“2002-01-01 09:00:00”请问如何避免,使记录只写一条
- 还有一个很急的问题,关于解开BPL或DPK为PAS、DCU之类的
- exe在2003/2008服务器上运行久了,通过VNC远程到服务器上,服务器的任务栏一片白。得重启资源管理器才能恢复,这是什么问题造成的?
- 以各位开发数据库程序的经验看,这种问题应该怎么样处理?
- 关于TListView的GetNextItem(ListItem,Direction,States);问题
//CompareMem()procedure TForm1.Button1Click(Sender: TObject);
var
A, B: TRect;
begin
A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 4);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.1 相等')
else ShowMessage('No.1 不相等'); A := Rect(1, 2, 3, 4);
B := Rect(1, 2, 3, 5);
if CompareMem(@A, @B, SizeOf(TRect)) then
ShowMessage('No.2 相等')
else ShowMessage('No.2 不相等');
end;procedure TForm1.Button2Click(Sender: TObject);
type
TMyRecord = record //记录类型大小必须固定
a1: Integer;
a2: ShortString; //不能用动态长度的类型//即:不能用string
end;
var
Rec1: TMyrecord;
Rec2: TMyrecord;
begin
Rec1.a1 := 1;
Rec1.a2 := '1'; Rec2 := rec1;
Rec1.a1 := 1;
if CompareMem(@Rec1, @Rec2, SizeOf(TMyRecord)) then
ShowMessage('No.3 相等')
else ShowMessage('No.3 不相等');
end;
function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler;
begin
Result := False;
Result := (a.a1=b.a1) and (a.a2 = b.a2);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
rec1.a1:=1;
rec1.a2:='1'; rec2:=rec1;
//change rec1
rec1.a1:=2;
if CompareRec(rec1,rec2) then ShowMessage('=') else ShowMessage('<>');end;