带有消息的EOleSysError'参数数量无效'从Delphi应用程序自动化PDFCreator时

时间:2014-09-03 03:42:11

标签: delphi automation ole

我正在尝试使用以下示例代码从Delphi应用程序自动化PDFCreator:

procedure TForm13.Button1Click(Sender: TObject);
var
  PDFCreatorQueue,
  job: OleVariant;
begin
  PDFCreatorQueue := CreateOleObject('PDFCreatorBeta.JobQueue');

  if not VarIsNull(PDFCreatorQueue)then
  begin
    try
      PDFCreatorQueue.Initialize();
//
//      if not PDFCreatorQueue.WaitForJob(15) then
//        MessageDlg(SPDFCreatorTimeout, mtError, [mbOK], 0)
//      else
//      begin
//        job := PDFCreatorQueue.NextJob();
//        job.ConversionProfileByGuid := 'DefaultGuid';
//        job.ConvertTo(FilePath);
//
//        if(not job.IsJobFinished or not job.JobSucceed) then
//          MessageDlg(Format(SPDFCreatorCouldNotConvertFile, [FilePath]), mtError, [mbOK], 0);
//      end;
    finally
      PDFCreatorQueue.ReleaseCom();
    end;
  end
  else
    MessageDlg(SPDFCreatorConnectionError, mtError, [mbOK], 0);
end;

在PDFCreatorQueue.Initialize()行;发生异常:

EOleSysError,带有消息'参数数量无效'

PDFCreator端的Initialize方法没有任何参数:

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[Guid("66A9CAB1-404A-4918-8DE2-29C26B9B271E")]
[ProgId("PDFCreatorBeta.JobQueue")]
public class Queue : IQueue
{

...

    /// <summary>
    ///     Initializes the essential components like JobInfoQueue for the COM object
    /// </summary>
    public void Initialize()
    {

我错过了什么?

1 个答案:

答案 0 :(得分:1)

从Delphi调用COM有特定的行为。

当您实现.net com visible assembly

的参数减少方法时
class CShaprClass
{
Initialize();
}

当你在Delphi代码中调用这样的参数less方法时:

  PDFCreatorQueue.Initialize();

您将获得无效参数错误。 这个调用方法转录中的Delphi通知COM将发送参数。

你应该致电

  PDFCreatorQueue.Initialize;

祝你好运, IRQ MISHELL