edit31.Text:=trim(Ad.Fieldbyname('tt_item').AsString);  我这样读出来乱码,如果
edit33.Text:=trim(ad.fieldbyname('tt_item').AsVariant );
  却是空的.  应该怎么做啊.已知存到数据库里的数据 是十进制的.

解决方案 »

  1.   

    var
      ss: TStringStreambegin  ss := TStringStream.Create('');
      TBlobField(ad.fieldbyname('tt_item')).SaveToStream(ss);
      Edit3.text := ss.DataString; 
      ss.Free;end如果数据库里的都是ASCII这样就没问题,如果还有其他信息最好不要这样,还是保存成内存流再处理。
      

  2.   

    不行按楼上的方法就出错,procedure TForm1.Button1Click(Sender: TObject);
    var
    ss: tstringStream ;
    begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from tbl_XWWL_char where fld_name='''+edit1.Text+'''');
    adoquery1.Open ;
     ss := TStringStream.Create('');
      TBlobField(adoquery1.fieldbyname('tt_item')).SaveToStream(ss);
      Edit2.text := ss.DataString;
      ss.Free;
    end;
    提示:Invalid class typecast.
    已知存在tt_item 里的数据转成十六进制的再存进去.而且数据库的类型是:varbinary(2000)
      

  3.   

    varbinary要这样:(adoquery1.FieldByName('tt_item') as TVarBytesField).AsString 
      

  4.   

    那就2个可能
    1.本身就是空的
    2.里面的不是ASCII码 你将内容存到一个 TVarBytesField 然后通过它的函数GetData把数据取出来。
      

  5.   

    嗯,里面不是ASCII码,是生成十六进制后存进去的.
    本来应该是简单问题,但我是刚学的,
    呵呵 到现在还没搞好.