blob: b33d3feb0d9b880a5cb290f45ae908e20b7a398d (
plain)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
{$mode objfpc}
program testm;
uses
Strings;
Type
TMyObject = Class(TObject)
public
Procedure MyMessage(Var Msg); message 'somestring';
Procedure MyMessage2(Var Msg); message 'otherstring';
procedure Message2(var msg); message 1;
procedure Message3(var msg); message 10000;
end;
TMyMessage = record
MsgStr : ShortString;
Data : pointer;
end;
TMyIntMessage = record
Id: integer;
Data : pointer;
end;
Var
MyExitCode : Longint;
Procedure TMyObject.MyMessage(Var Msg);
begin
Writeln('Got Message');
dec(MyExitCode);
end;
Procedure TMyObject.MyMessage2(Var Msg);
begin
Writeln('Got Message');
dec(MyExitCode);
end;
procedure TMyObject.Message2(var msg);
begin
Writeln('Got Message 2');
dec(MyExitCode)
end;
procedure TMyObject.Message3(var msg);
begin
Writeln('Got message 3');
dec(MyExitCode);
end;
var
msg : TMyMessage;
msgi : TMyIntMessage;
M : TMyObject;
s : shortstring;
begin
MyExitCode:=4;
M:=TMyObject.Create;
try
msg.MsgStr:='somestring';
M.DispatchStr(Msg);
msg.MsgStr:='otherstring';
M.DispatchStr(msg);
msgi.id := 10000;
M.Dispatch(msgi);
msgi.id := 1;
M.Dispatch(msgi);
finally
M.Free;
end;
halt(MyExitCode);
end.
|