1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
program testmethodcompare;
{$mode objfpc}{$H+}
uses
Classes, SysUtils;
var
M1, M2: TNotifyEvent;
procedure WriteReport;
begin
writeln('WriteReport',
' M1.Data=',PtrUInt(TMethod(M1).Data),
' M1.Code=',PtrUInt(TMethod(M1).Code),
' M2.Data=',PtrUInt(TMethod(M2).Data),
' M2.Code=',PtrUInt(TMethod(M2).Code),
' Assigned(M1)=',Assigned(M1),
' Assigned(M2)=',Assigned(M2),
' M1=nil=',(M1=nil),
' M2=nil=',(M2=nil),
' M1<>nil=',(M1<>nil),
' M2<>nil=',(M2<>nil),
' M1=M2=',(M1=M2),
' M1<>M2=',(M1<>M2),
''
);
end;
function Meth(Code, Data: Pointer): TNotifyEvent;
var
m: TMethod;
begin
m.Code:=Code;
m.Data:=Data;
Result:=TNotifyEvent(m);
end;
begin
M1:=nil;
M2:=nil;
WriteReport;
M1:=Meth(Pointer(1),Pointer(0));
WriteReport;
M2:=M1;
WriteReport;
M2:=nil;
M1:=Meth(Pointer(0),Pointer(1));
WriteReport;
M2:=M1;
WriteReport;
M2:=nil;
M1:=Meth(Pointer(1),Pointer(1));
WriteReport;
M2:=M1;
WriteReport;
end.
|