blob: ec9b93607aba114899d2baa906c498edd41e1c16 (
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
|
program tintfcdecl2;
{$mode objfpc}{$H+}
type
IcdeclIntf = interface
['{3C409C8B-3A15-44B2-B22D-6BAA2071CAAD}']
function DoSomething : longint; cdecl;
end;
{ TcdeclClass }
TcdeclClass = class(TInterfacedObject,IcdeclIntf)
private
FCounter: integer;
public
function DoSomething : longint; cdecl; virtual;
end;
{ TcdeclClass }
function TcdeclClass.DoSomething: longint; cdecl;
begin
inc(FCounter);
result := FCounter;
end;
var
js: TcdeclClass;
ji: IcdeclIntf;
i: longint;
begin
js := TcdeclClass.Create;
i := js.DoSomething;
ji := IcdeclIntf(js);
i := ji.DoSomething;
if i <> 2 then halt(1);
end.
|