OleVariant的值如何正常显示在Memo中,
请问高手如何类型进行转换.

解决方案 »

  1.   

    这要看你的OleVariant里面数据是怎么存储的了,把过程逆过来就行了
      

  2.   

    OleVariant里能存储任何数据,没有通用的转换的,不过一些常见类型有默认的转换
      

  3.   

    是接受的一个数据报
    通过winsock.getadata()得到,就是不能正常显示,得到全是???????或其它字符组成的串
      

  4.   

    请问如何表示?
    在DataArrival事件中
    var
    strdata:OleVariant;
    begin
    winnsock.getdata(strdata);
    memo1.lines.add(strData);
    end;
      

  5.   

    var
      str: String;
      i: Integer;
      strdata:OleVariant;
    begin
      {...}
      if VarIsArray(strdata) then
        for i := 0 to Length(strdata)-1 do
          str := str + Chr(StrToInt(strdata[i]));
      memo1.lines.add(str);
    end;
      

  6.   

    var
      v: variant;
      i: integer;
     // buffer: array[0..300-1] of byte;
      buffer: byte;
      temp,l,j,m,n: integer;
      tmpstr: string;
      tmpbin: string;
      t1,t2: pchar;
    begin
          v:=mscomm1.Input;
        j:=vararraydimcount(v);
        l:=vararraylowbound(v,1);
        k:=vararrayhighbound(v,1);
        buff[1]:=v[0];
       
        tmpbin:=bytetohex(buff[1]);
        tmpstr:=buftostr(buff[1]);        d1:=d1+'   '+tmpbin+tmpstr;
    memo1.Text:=d1+'   '+inttostr(strlen(pchar(d1)))+'   '+inttostr(j)+'   '+inttostr(l)+'   '+inttostr(k);