数据库表中有个字段re varchar(1000)
在delphi中,用TTable或TQuery取此字段的值只能取255个字符长
因为是通过 FieldByName('re').Asstring取值的,我知道AnsiString可以更长
所以用TQuery对此字段进行Update时没什么问题。
但怎么才能完全显示这个字段的值呢?

解决方案 »

  1.   

    在Delphi的默认编译器指令设置情况下,String就是AnsiString。所以“用TTable或TQuery取此字段的值只能取255个字符长”的说法是错误的。————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    上面两位老兄指的我都试过
    我加上{$H+}或{$H-}都没什么反应开始我是用DBMEmo,后来改成TMemo也一样,数据库中可以超过255,但取过来只能是255
    var
      S: AnsiString;
    begin
      ...
      S:= FieldByName('re').asstring;
    //S:= FieldByName('re').Value;  //也不行
      ...
    end;
      

  3.   

    Memo1.Lines.Assign(TBlobField(Table1.FieldByName('re')));
      

  4.   

    var
      x:TBlobStream;
      z:TStringStream;
    begin
      with ADOQuery do
      begin
        Close;
        Sql.Clear;
        Sql.Add('select cast(Re as text) as Re from TableName ');
        Open;
        if not IsEmpty then
        begin
          x:=TBlobStream.Create(TBlobField(FieldByName('Re')),bmRead);
          z:=TStringStream.Create('');
          z.CopyFrom(x,x.Size);
          RichEdit1.Lines.Clear;
          RichEdit1.Lines.SetText(PChar(z.DataString));
          x.free;
          z.Free;
        end;
      end;
    end;
      

  5.   

    谢谢各位!
    主要是用' cast(Re as text) as Re '就行了