S
scjinsui
Unregistered / Unconfirmed
GUEST, unregistred user!
我已经提出这个问题三次了,但却没有得到好的回复,盼望高手现身!!!!
[?]现有一数据库,其一字段类型为varbinary,在其他程序中往这个数据库中录入数据,
该字段存储的是Jpg图像,我现在要读取该字段,并显示在Timage中,请问如何实现?
我的读取程序段如下:
var
i:integer;
str:string;
m: TMemoryStream;
Faceimage :Tjpegimage;
// st:Tstream;
s:array of byte;
begin
with adoquery1 do
begin
if active then close;
sql.text:='select * from register where idcard='''+edit1.text+'''';
open;
if recordcount>0 then
begin
str:=Fieldbyname('image').asstring;
if Length(str)>0 then
begin
setlength(s,Length(str));
for i:=1 to length(str) do
begin
s[i-1]:=byte(str);
end;
m := TMemoryStream.Create;
// TBlobField(Fieldbyname('image')).SaveToStream(m);
// (Fieldbyname('image') as Tblobfield).savetostream(m);
m.write(s,length(str));
m.Position:=0;
if m.Size>0 then
begin
Faceimage := Tjpegimage.Create;
Faceimage.LoadFromStream(m);
image1.Picture.Assign(FaceImage);
end;
end;
end;
但执行时出现错误‘JPEG error #52’,(存在数据库中的格式为jpg)????
如果使用强制转化语句:
TBlobField(Fieldbyname('image')).SaveToStream(m);
则会出现错误提示“Invalid class typecast”?
不知该如何解决????!!!!
[?]现有一数据库,其一字段类型为varbinary,在其他程序中往这个数据库中录入数据,
该字段存储的是Jpg图像,我现在要读取该字段,并显示在Timage中,请问如何实现?
我的读取程序段如下:
var
i:integer;
str:string;
m: TMemoryStream;
Faceimage :Tjpegimage;
// st:Tstream;
s:array of byte;
begin
with adoquery1 do
begin
if active then close;
sql.text:='select * from register where idcard='''+edit1.text+'''';
open;
if recordcount>0 then
begin
str:=Fieldbyname('image').asstring;
if Length(str)>0 then
begin
setlength(s,Length(str));
for i:=1 to length(str) do
begin
s[i-1]:=byte(str);
end;
m := TMemoryStream.Create;
// TBlobField(Fieldbyname('image')).SaveToStream(m);
// (Fieldbyname('image') as Tblobfield).savetostream(m);
m.write(s,length(str));
m.Position:=0;
if m.Size>0 then
begin
Faceimage := Tjpegimage.Create;
Faceimage.LoadFromStream(m);
image1.Picture.Assign(FaceImage);
end;
end;
end;
但执行时出现错误‘JPEG error #52’,(存在数据库中的格式为jpg)????
如果使用强制转化语句:
TBlobField(Fieldbyname('image')).SaveToStream(m);
则会出现错误提示“Invalid class typecast”?
不知该如何解决????!!!!