type
  frame=record
          addr:byte;
          info:string;
        end;  
然后声明   
  var 
    f:array of frame; 
    ole:olevariant;
 
再....
         setlength(f,1);
         f[0].addr:=100;
         f[0].info:=memo1.Text;
         p:=TypeInfo(frame);
         DynArrayToVariant(ole,f,p);
然后就出错,是 DynArrayToVariant 的第二个参数错误,不知道是不是要 const,如果要 const ,那么这个动态数组又怎么赋值呢?还有 第三个参数 TypeInfo 我也不是很理解?DynArrayToVariant原型如下:
procedure DynArrayToVariant(var V: Variant; const DynArray: Pointer; TypeInfo: Pointer);我究竟该怎样才能实现动态数组到 Variant 的转换啊!!
急死我了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!另外,能不能把一个string 类型转换为 varbyte 的olevariant 类型,该如何做啊

解决方案 »

  1.   

    我的测试例子:
    Test = array of string;procedure TForm1.Button1Click(Sender: TObject);
    var
        f: test;
        ole:variant;
        P: Pointer;
        A: OleVariant;
    begin
       setlength(f,1);
       f[0] := 'aaa';
       p:=TypeInfo(test);
       DynArrayToVariant(ole,f,p);
       A := Ole;
       ShowMessage(A[0]);
    end;这样调用是没有问题的,但如果是array of 自定义的记录类型好像就不行了,肯定要出错,不知道支持不支持记录类型。
      

  2.   

    不能操作记录???疯掉了
    请问
    能不能把 string 类型直接转换为 varbyte 的 olevarinat 类型呢?还是由于实际需要的原因
      

  3.   

    试试StrToOleStr吧,然后再转换。
      

  4.   

    StrToOleStr ???
    高手指点,怎么用???
    我在DELPHI 的帮助里找不到啊?
      

  5.   

    olevarinat 大家用的多吗?
    都用在什么场合了?