我用delphi3点用了一个外部接口a.dll
a.dll里面有一个函数
function SaveDoc(const SrcFile: WideString; var dstFile: WideString; var AttribInfo, ReAttInfo: OleVariant; var CurClsID: WideString): Smallint;我在程序中用到
var
classid:widestring;
dstfile:widestring;
attribinfo,reattinfo:olevariant;
begin
attribinfo[1,0]:='file';
attribinfo[1,1]:='sheet1';
attribinfo[2,0]:= 'organization';
attribinfo[2,1]:= 'lyc';
attribinfo[3,0]:= 'address1';
attribinfo[3,1]:= 'a';
attribinfo[4,0]:= 'revision';
attribinfo[4,1]:= 'version 1';
doc1:=fntsave_tlb.CoDoc.Create;
classid:=doc1.GetClassInfo('ddb');
doc1.SaveDoc('d:\lyc\mydesign.ddb',dstfile,attribinfo,reattinfo,classid);
执行出错,报告variant不是array
variant类型和array类型不能通用,应该怎么解决,或者是变量怎么定义

解决方案 »

  1.   

    var
      classid: WideString;
      dstfile: WideString;
      attribinfo, reattinfo: OleVariant;
    begin
      attribinfo := VarArrayCreate([1, 4, 0, 1], varVariant); //其他先不说,Variant类型如果要当成数组使用就需要开辟空间
      attribinfo[1, 0] := 'file';
      attribinfo[1, 1] := 'sheet1';
      attribinfo[2, 0] := 'organization';
      attribinfo[2, 1] := 'lyc';
      attribinfo[3, 0] := 'address1';
      attribinfo[3, 1] := 'a';
      attribinfo[4, 0] := 'revision';
      attribinfo[4, 1] := 'version 1';
    //....
    end;