我写的程序:unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, StdCtrls, Buttons, ExtCtrls;type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    Query1: TQuery;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.BitBtn1Click(Sender: TObject);
var
  mStream:TMemoryStream;
  bmp:TBitmap;
begin
  with query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from ld ');
    Open;
    if not FieldByName('img').IsNull then begin
    mStream:=TMemoryStream.Create ;
    bmp:=TBitmap.Create;
    TBlobField(FieldByName('img')).SaveToStream(mStream);
    mStream.Position :=0;
    bmp.LoadFromStream(MStream);
    image1.Picture.Assign(bmp);
    end
    else
     begin
      image1.Picture :=nil;
     end;
  end;
    mStream.Free;
    bmp.Free;
  end;
end.问题:
运行程序后只能从数据库中取出原图的一部分,原图大小为700多K,取出的部分只有32K.(所用数据库为SYBASE).
求高人指点问题出在哪里,应该如何解决!
不胜感激!

解决方案 »

  1.   

    估计你是用BDE的,如果是这样的话,打开delphi自带的SQL Explorer,
    选中你的那个数据库别名,把BLOB SIZE设置的大一点就行了,默认是32K的
      

  2.   

    你将imag控件的autosize设为ture,试一试
      

  3.   

    用ADO控件,图显示用ImageEn控件,保证多大的图象都没问题
      

  4.   

    正好我也在用imageen做个软件,用sqlserver和access数据库,没有你说的问题,可能图片写入数据库时出了问题
      

  5.   

    sybase不熟,检查你的sybase数据库配制及表定义,会不会图像字段的大小被限止为32K
    (程序看上去没问题)