使用OpenOffice创建pdf文件时出现EOLESysError错误变量类型错误

时间:2012-06-01 08:12:21

标签: delphi pdf activex openoffice.org

我使用Openoffice的ActiveX创建了pdf文件(来自doc文件),并使用了所讨论的技术here

最近,使用smae OO版本(3.3),代码在这一行上不再起作用(请参阅上面链接中的代码):

FilterParams[0] := CreateProperty('FilterName', AnsiString('writer_pdf_Export'));

我得到了EOLESysError“Bad Variable Type”。

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

阅读this question后,我以这种方式解决了问题:

function CreateProperty(const AName: AnsiString; const AValue: Variant): Variant;
  begin
    Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Result.Name := AName;
    Result.Value := AValue;
  end;

更改为

function CreateProperty(const AName: AnsiString; const AValue: Variant): Variant;
  var
    AVal : Variant;
  begin
    Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Result.Name := AName;
    AVal := AValue; // this is done to avoid 'Bad Variable Type'
    Result.Value := AVal;
  end;

您也可以通过移除const参数中的AValue来解决此问题:

function CreateProperty(const AName: AnsiString; AValue: Variant): Variant;
begin
  Result := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
  Result.Name := AName;
  Result.Value := AValue;
end;