File: testmethodcompare.pas

package info (click to toggle)
lazarus 2.0.10%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 219,188 kB
  • sloc: pascal: 1,867,962; xml: 265,716; cpp: 56,595; sh: 3,005; java: 609; makefile: 568; perl: 297; sql: 222; ansic: 137
file content (58 lines) | stat: -rw-r--r-- 1,061 bytes parent folder | download | duplicates (10)
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.