type
PMyPoint = ^TMyPoint;
TMyPoint = record
x, y, z: Integer;
end;
// int __msfastcall cube(int num);
function cub(X: Integer): Integer; msfastcall;
external 'CppDll.dll' name 'cube';
// double __msfastcall arr(double a[], int i, int j, float f);
function arr(A: Pointer; X, Y: Integer; S: Single): Double; msfastcall;
external 'CppDll.dll';
// Point __msfastcall ret_struct(int x, int y, int z);
function ret_struct(X, Y, Z: Integer): TMyPoint; msfastcall;
external 'CppDll.dll';
// MyPoint __msfastcall pass_struct(const MyPoint & q);
function pass_struct(P: PMyPoint): TMyPoint; msfastcall;
external 'CppDll.dll';
// char __msfastcall ret_char(char * s)
function ret_char(s: PChar): Char; msfastcall;
external 'CppDll.dll';
var
p: TMyPoint;
a: array[0..5] of double;
begin
a[0] := 5.3;
a[1] := 10.1;
writeln(cub(2));
writeln(arr(@a, 2, 3, 6.8));
p := ret_struct(2, 3, 5);
writeln(p.x, ' ', p.y, ' ', p.z);
p := pass_struct(@p);
writeln(p.x, ' ', p.y, ' ', p.z);
writeln(ret_char('abc'));
end.