在线等,图象保存的问题??

laodiao 2002-06-16 08:49:27
我使用了Timage控件,在我向数据库添加一条记录的时候,由于表中有
Image字段,如果这个图象字段没有图象的时候,保存的时候就会出现下面的错误,
pic File not found
错误是出现在向数据库提交记录的时候,
我的程序是这样写的
procedure TWRYMain.PostImg(const query1:tquery;const str1:string;const DlgOpPic:TOpenPictureDialog;const imgpic:timage);
var
str:Tmemorystream;
begin
//用来保存和显示图象
{在这儿我想添加一段代码,因为数据表的状态可能为插入和编辑,但是我在这儿需要这样去判断,怎样去判断Image中是否有图象,如果有图象我就进行下面的处理,如果没有图象,这段提交图象的程序就不执行,因为图象可以为Bmp和Jpg,我的判断的程序应该怎样去写呢??}
str:=Tmemorystream.Create;
str.LoadFromFile(DlgOpPic.FileName);
str.Position:=0;
Tblobfield(query1.FieldByName(str1)).loadfromstream(str);
end;

请大家给我一点指点,好吗?
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netlib 2002-06-16
  • 打赏
  • 举报
回复
procedure TWRYMain.PostImg(const query1:tquery;const str1:string;const DlgOpPic:TOpenPictureDialog;const imgpic:timage);
var
str:Tmemorystream;
begin
//用来保存和显示图象
{在这儿我想添加一段代码,因为数据表的状态可能为插入和编辑,但是我在这儿需要这样去判断,怎样去判断Image中是否有图象,如果有图象我就进行下面的处理,如果没有图象,这段提交图象的程序就不执行,因为图象可以为Bmp和Jpg,我的判断的程序应该怎样去写呢??}
if query1.FieldByName('img').isnull then//判断是否为空
begin
str:=Tmemorystream.Create;
str.LoadFromFile(DlgOpPic.FileName);
str.Position:=0;
Tblobfield(query1.FieldByName(str1)).loadfromstream(str);
//如果你用的是adoquery,把tblobfield改为TADOBlobField
end;
end;
关于你的bmp、jpg的区分,在二进制中是很难区分的,建议你在建立一个字段,专门记录图的类型。
laodiao 2002-06-16
  • 打赏
  • 举报
回复
谁能给出这段代码,我现在的思路很乱,求求各位了!!不胜感激!!
westfly 2002-06-16
  • 打赏
  • 举报
回复
判断Image.Picture.Graphic 是否为 nil
naughtyboy 2002-06-16
  • 打赏
  • 举报
回复
如果只是看看image里面有没有图像

procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if image1.Picture.Graphic=nil then
showmessage('no')
else
showmessage('has')
end;
laodiao 2002-06-16
  • 打赏
  • 举报
回复
在保存数据图象的时候,会遇到一些情况,

有的时候不改变图象字段的内容,有的时候需要改变,
在数据表Before Post 里面加入代码,对于Query,打开数据集的时候,
总要去执行Before Post过程,所以在进行程序判断的时候,需要考虑到这些方面的东西,程序中借助于PictureOpendialog,Image,等控件,像这样的情况怎样去判断呢??
lxpbuaa 2002-06-16
  • 打赏
  • 举报
回复
注意:如果你用的是ADO,那么记得将as TBlobField改为:as TADOBlobField

—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
lxpbuaa 2002-06-16
  • 打赏
  • 举报
回复
procedure TWRYMain.PostImg(const query1:tquery;const str1:string;const DlgOpPic:TOpenPictureDialog;const imgpic:timage);
begin
if query1.FieldByName('图像子短').AsVariant <> null then //没有
begin
if not (query1.State in [dsEdit,dsInsert]) then query1.Edit;
(query1.FieldByName('图像子短') as TBlobField).LoadFromFile(DlgOpPic.FileName);
query1.Post;
end;
end;


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧