hello how to import interfaced class to pascalscript ?
relativ opened this issue · 2 comments
relativ commented
hello,
I am trying to import interfaced object to pascalscript but how to define AddClassN method
for example
type
TDeneme = class(TInterfacedObject, IDeneme)
end;
from now ı should implement interface type too like
CL.AddClassN(CL.FindClass('TInterfacedObject'),['IDeneme'],'TDeneme')
but where I have to define interface on pascalscript havent find it.
thanks
serkan
pult commented
Use the utility "unit-importing\CMDimp.dpr". It will create the necessary wrapper ...
sample:
type
OleVAriant = Variant;
IEnumVARIANT = interface(IUnknown)
['{00020404-0000-0000-C000-000000000046}']
function Next(celt: LongWord; var rgvar : OleVariant;
out pceltFetched: LongWord): HResult; stdcall;
function Skip(celt: LongWord): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out Enum: IEnumVARIANT): HResult; stdcall;
end;
procedure SIRegister_IEnumVARIANT(CL: TPSPascalCompiler);
begin
CL.AddTypeS('OleVAriant', 'Variant');
//with RegInterfaceS(CL,'IUnknown', 'IEnumVARIANT') do
with CL.AddInterface(CL.FindInterface('IUnknown'),IEnumVARIANT, 'IEnumVARIANT') do
begin
RegisterMethod('function Next( celt : LongWord; var rgvar : OleVariant; out pceltFetched : LongWord) : HResult', CdStdCall);
RegisterMethod('function Skip( celt : LongWord) : HResult', CdStdCall);
RegisterMethod('function Reset : HResult', CdStdCall);
RegisterMethod('function Clone( out Enum : IEnumVARIANT) : HResult', CdStdCall);
end;
end;
pult commented
program interface_01;
procedure go();
var
CI: IUnknown;
DI: IDeneme;
begin
CI := TComponent.Create(nil);
DI := TDeneme.Create;
end;
begin
writeln('Go:');
go();
writeln('Done!');
end.