我怎样定义记录类的字段,而可以存放图片等二进制文件? 自定义记录文件它规定每条记录其长度要相等,但是图片文件的长度却不是相等的,所以,不怎么好解决。建议用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);这样你保存流以后才是图像 关于clientDataSet一个奇怪的问题?请大家帮看看! 用ActiveForm来编写控件(ocx),请问在ActiveForm怎样写与外部程序间的数据接口. 廣州的朋友們,請問一下廣州的薪資水平` 高手,高高手,超高手请进(百元求解!)1000分 求助! Crystal使用数据定义文件(TTX)作数据源,如何把记录集传送给它? 有没有比较好的库存处理办法啊? delphi和Excel的列宽控制 现在没斑竹啊.....怎么你们不当吗? DELPHI的TPRINTER打印问题? 关于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);这样你保存流以后才是图像