userTemplate: array[0..512] of char;.....
  with dm.cmd.Parameters.AddParameter do
  begin
    dataType := ftBytes;
    direction := pdInput;
    value := userTemp;  //编译错误
  end;
.....求救大侠  如何将char array 转换为variant类型???

解决方案 »

  1.   

    function VarArrayOf(const Values: array of Variant): Variant;我晕那个参数楼上的没看?
      

  2.   

    userTemplate: array[0..512] of char;var
      st:string;.....
      st:=userTemp//转换成string
      with dm.cmd.Parameters.AddParameter do
      begin
        dataType := ftBytes;
        direction := pdInput;
        value := st;  //编译错误,Pchar类型等于是数组类型,不能直接赋值给Variant
      end;
    .....
      

  3.   

    userTemplate: array[0..512] of char;var
      st:string;.....
      st:=userTemp;//转换成string,刚才掉了个分号。
      with dm.cmd.Parameters.AddParameter do
      begin
        dataType := ftBytes;
        direction := pdInput;
        value := st;  //编译错误,Pchar类型等于是数组类型,不能直接赋值给Variant
      end;
    .....
      

  4.   

    用过string转换了
    但是俺那个array存的是2进制的数据,所以string对象是''空值的~~还有其他办法没有啊
      

  5.   

    http://borland.mblogger.cn/aiirii/posts/12204.aspxvariant 和 Stream 的互換 道理是一样的,自己修改下
      

  6.   

    加个转换~~
    unit Main;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ADODB, StdCtrls, DB;type
      ArrayVar = array of Variant;
      TForm1 = class(TForm)
        ADOCommand1: TADOCommand;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        FUserTemplate: array[0..512] of char;
        function GetArrayVar(AArrayChar: array of Char): ArrayVar;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      ss: TParameter;
    begin
      ss := ADOCommand1.Parameters.AddParameter;
      ss.DataType := ftBytes;
      ss.Direction := pdInput;
      ss.Value := VarArrayOf(GetArrayVar(FUserTemplate));
    end;function TForm1.GetArrayVar(AArrayChar: array of Char): ArrayVar;
    beginend;end.
      

  7.   


    function TForm1.GetArrayVar(AArrayChar: array of Char): ArrayVar;
    beginend;楼上那位帮写下这个函数好码?
      

  8.   

    var
      P : Pointer;
      len : Integer;
    begin
      len := length(str);
      oleVar := varArrayCreate([0, len - 1], varByte);
      if len <= 0 then
      begin
        Exit;
      end;
      P := VarArrayLock(oleVar);
      Move(str[1], p^, len);
      VarArrayUnlock(oleVar);
    end;
      

  9.   

    还想问一个问题
    就是如何将OleVariant类型转换味普通的类型,比如说array[0..512] of byte这类