我使用Openoffice的ActiveX创建了pdf文件(来自doc文件),并使用了所讨论的技术here。
最近,使用smae OO版本(3.3),代码在这一行上不再起作用(请参阅上面链接中的代码):
FilterParams[0] := CreateProperty('FilterName', AnsiString('writer_pdf_Export'));
我得到了EOLESysError“Bad Variable Type”。
你能帮我解决这个问题吗?
答案 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;