0

Hello there is a possibility to use a library. Net with Delphi XE2? This is the library DocX.dll available here http://docx.codeplex.com/. Thanks in advance.

1 Answers1

0
using (DocX document = DocX.Load("Test.docx"))
{
   document.ReplaceText("pear", "banana", true, RegexOptions.IgnoreCase);
  document.Save();
}

Delphi:

    var
      Host: TJclClrHost;
      Obj: OleVariant;
      Assm: _Assembly;
      T: _Type;
      Params1: Variant;
      params2:Variant;

    begin
      Host := TJclClrHost.Create('v4.0.30319');
      Host.Start;
      Assm := Host.DefaultAppDomain.Load_2('DocX');
      T := Assm.GetType_2('Novacode.DocX');
    //  Obj:=T.InvokeMember_3('', BindingFlags_CreateInstance, nil, null, nil);
      Params1 := VarArrayOf(['sample.docx']);
      obj:=T.InvokeMember_3('Load', BindingFlags_InvokeMethod, nil, null, PSafeArray(VarArrayAsPSafeArray(Params1)));
      Params2 := VarArrayOf(['Before','After']);
      t.InvokeMember_3('ReplaceText', BindingFlags_InvokeMethod, nil, Obj, PSafeArray(VarArrayAsPSafeArray(Params2)));
      t.InvokeMember_3('Save', BindingFlags_InvokeMethod, nil, Obj, nil);
      Host.Stop;
end;

t.InvokeMember_3('ReplaceText',..... generates error:the method "Novacode.DocX.ReplaceText" does not exist. I can not call the method ReplaceText (because it is an inherited method?)