我怎样定义记录类的字段,而可以存放图片等二进制文件? 自定义记录文件它规定每条记录其长度要相等,但是图片文件的长度却不是相等的,所以,不怎么好解决。建议用Char型定义,如:Bitmap:array[0..5000] of Char;//5K大小然后将图片用流读出来,再保存! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不用定义这种类,可直接使用流来存储:数据库用BLOB字段,若为MSSQL设为Image类型保存:Adoquery1.Parameters.ParamByName('CC').LoadFromFile(FileNameByPath, ftBlob);//文件Adoquery1.Parameters.ParamByName('CC').LoadFromStream(PicStream, ftBlob);//图片提取:(Adoquery1.FieldByName('模板') as TBlobField).SaveToFile(FileNameByPath);//文件(Adoquery1.FieldByName('图片') as TBlobField).SaveToStream(PicStream);//图片-------------------------------------------------------------------使用stream:var PicStream:TMemoryStream-------------------- PicStream:=TMemoryStream.Create PicStream.LoadFromFile(FileNameByPath) PicStream.free; 流的类可以可以使用 TMemoryStream来存储!如果从文件中读入可以使用TFilestream,其实使用TBlobField.LoadFromStream、和TBlobField.LoadFromFile可以进行操作的!读出可以使用SavetoFile 和SaveToStream就可以了1 请问我下面的程序有什么问题?我使用的是AdoTable控件Cstring := 'provider= %s;Data Source=%s'; if OpenPictureDialog1.Execute then begin Path := ExtractFilePath(OpenPictureDialog1.FileName); ADOTbl.ConnectionString:=Format(Cstring,['Microsoft.Jet.OLEDB.4.0',path]); AdoTbl.TableName:= 'Tp'; AdoTbl.Active := True; Ms_Stream:=TMemoryStream.Create; Ms_Stream.LoadFromFile(OpenPictureDialog1.FileName); TBlobField(AdoTbl['photo']).LoadFromStream(Ms_Stream,ftBlob); end; 你这句代码保存的内容其实是文件,而不是图像!Ms_Stream.LoadFromFile(OpenPictureDialog1.FileName);你最好把它放在image控件中再取出:image.picture.Bitmap.loadfromfile(OpenPictureDialog1.FileName);//bmpimage.picture.Graphic.loadfromfile(OpenPictureDialog1.FileName);//jpgimage.picture.bitmap.SaveToStream(Ms_Stream);这样你保存流以后才是图像 现在的人怎么都那么浮躁? dbgrid的问题,请高手回答一下, 请教一个释放内存的问题 急!!!请问各位大虾一个问题 帮帮忙阿!!! 年前升星,明天回家,买到黄牛票,鄙视中国铁道部!!! 用ravereport5.0如何写预览和打印的程序呢? 如何清空image中的图片 鼠标右键退出服务 各位大侠,怎样从文本里读取文本?谢了。 市面上有什么设计模式的书么 关于socket程序提"服务器运行失败"的问题?(比较菜) 问一个有关ComboBox的问题
Adoquery1.Parameters.ParamByName('CC').LoadFromStream(PicStream, ftBlob);//图片
提取:(Adoquery1.FieldByName('模板') as TBlobField).SaveToFile(FileNameByPath);//文件
(Adoquery1.FieldByName('图片') as TBlobField).SaveToStream(PicStream);//图片
-------------------------------------------------------------------
使用stream:var
PicStream:TMemoryStream
--------------------
PicStream:=TMemoryStream.Create
PicStream.LoadFromFile(FileNameByPath) PicStream.free;
Cstring := 'provider= %s;Data Source=%s';
if OpenPictureDialog1.Execute then begin
Path := ExtractFilePath(OpenPictureDialog1.FileName);
ADOTbl.ConnectionString:=Format(Cstring,['Microsoft.Jet.OLEDB.4.0',path]);
AdoTbl.TableName:= 'Tp';
AdoTbl.Active := True;
Ms_Stream:=TMemoryStream.Create;
Ms_Stream.LoadFromFile(OpenPictureDialog1.FileName);
TBlobField(AdoTbl['photo']).LoadFromStream(Ms_Stream,ftBlob);
end;
Ms_Stream.LoadFromFile(OpenPictureDialog1.FileName);
你最好把它放在image控件中再取出:image.picture.Bitmap.loadfromfile(OpenPictureDialog1.FileName);//bmp
image.picture.Graphic.loadfromfile(OpenPictureDialog1.FileName);//jpgimage.picture.bitmap.SaveToStream(Ms_Stream);这样你保存流以后才是图像