remobjects/pascalscript

hello how to import interfaced class to pascalscript ?

relativ opened this issue · 2 comments

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.