代码如下:var mstr:TMemoryStream;
begin
  mstr:=TMemoryStream.Create;
  mstr:=getkqinfo;  memo1.Lines.LoadFromStream(mstr);
end;  function getkqinfo:TMemoryStream;
var mstr:TMemoryStream;
begin
  mstr:=TMemorySTream.Create;
  with Adoqry2 do
  begin
    Active := True;
    if not IsEmpty then
    begin
      TBlobField(FieldByName('kqinfo')).SaveToStream(mstr);
    end;
  end;
  result := mstr;
end;请大家帮忙看下,为什么memo1取不到数,我测试了的,返回来的mstr size大小超过20000。

解决方案 »

  1.   

    试下这样:var mstr:TMemoryStream;
    begin
      mstr:=TMemoryStream.Create;
      if getkqinfo(mstr) then
        memo1.Lines.LoadFromStream(mstr);
      mstr.Free;
    end;function getkqinfo(mstr: TMemoryStream): Boolean;
    begin
      with Adoqry2 do
      begin
        Active := True;
        if not IsEmpty then
        begin
          TBlobField(FieldByName('kqinfo')).SaveToStream(mstr);
          result := True;
        end
        else result := False;
      end;
    end;
      

  2.   

    这个我可以肯定的是mstr是取到数了,但memo1就是读不了这个mstr
      

  3.   

    function getkqinfo:TMemoryStream;
    begin
      Result := TMemorySTream.Create;
      Result.LoadFromFile('c:\sql.txt');
      Result.Position := 0;
    end;procedure TForm11.btn1Click(Sender: TObject);
    begin
      mmo1.Lines.LoadFromStream(getkqinfo);
    end;
      

  4.   


    上边的例子演示了stream读取如果你确定mstr不为nil, 执行下 mstr.Position := 0;
      

  5.   


    是的,设了position := 0 就好了。