我要将一个图片保存到一个type文件中,可是没有失败了,希望各位帮忙 ( 积分: 200 )

  • 主题发起人 主题发起人 xwkp2008
  • 开始时间 开始时间
X

xwkp2008

Unregistered / Unconfirmed
GUEST, unregistred user!
我要将一个图片保存到一个type文件中
可是没有失败了
保存后还是只有type的内容
type
Pstuffer=^stuffer;
stuffer=packed record
num:string[20];
name:string[10];
password:string[20];
dept:string[50];
position:string[50];
tel:string[20];
email:string[100];
intro:string[255];
image:string[100];
size:int64;
end;

var dbfile:file of stuffer;
//保存
代码:
function savetodb(current:Pstuffer;route:string):string;
var fs:TfileStream;
var imagestream:TMemoryStream;
begin

     imagestream:=TMemoryStream.Create;
     imagestream.LoadFromFile(current^.image);
     Current^.size:=imagestream.Size;
     fs:=Tfilestream.Create(route,fmCreate);
     fs.Position:=0;
     fs.Write(Current^,sizeof(Current^));
     fs.Position:=sizeof(current^);
     fs.Write(imagestream,Current^.size);
     fs.Free;
end;

//读取
function readfromdb(current:Pstuffer;route:string):boolean;
var fs:TfileStream;
var imagestream:TMemoryStream;
begin

     imagestream:=TMemoryStream.Create;
     fs:=Tfilestream.Create(route,fmOpenRead);
     fs.Position:=0;
     fs.Seek(0,soFromCurrent);
     fs.Read(current^,sizeof(current^));
     fs.Read(imagestream,current^.size);
     imagestream.SaveToFile('db/'+current.image);
     fs.Free;
end;
 
我要将一个图片保存到一个type文件中
可是没有失败了
保存后还是只有type的内容
type
Pstuffer=^stuffer;
stuffer=packed record
num:string[20];
name:string[10];
password:string[20];
dept:string[50];
position:string[50];
tel:string[20];
email:string[100];
intro:string[255];
image:string[100];
size:int64;
end;

var dbfile:file of stuffer;
//保存
代码:
function savetodb(current:Pstuffer;route:string):string;
var fs:TfileStream;
var imagestream:TMemoryStream;
begin

     imagestream:=TMemoryStream.Create;
     imagestream.LoadFromFile(current^.image);
     Current^.size:=imagestream.Size;
     fs:=Tfilestream.Create(route,fmCreate);
     fs.Position:=0;
     fs.Write(Current^,sizeof(Current^));
     fs.Position:=sizeof(current^);
     fs.Write(imagestream,Current^.size);
     fs.Free;
end;

//读取
function readfromdb(current:Pstuffer;route:string):boolean;
var fs:TfileStream;
var imagestream:TMemoryStream;
begin

     imagestream:=TMemoryStream.Create;
     fs:=Tfilestream.Create(route,fmOpenRead);
     fs.Position:=0;
     fs.Seek(0,soFromCurrent);
     fs.Read(current^,sizeof(current^));
     fs.Read(imagestream,current^.size);
     imagestream.SaveToFile('db/'+current.image);
     fs.Free;
end;
 
你一次读写的数据量好像太大了吧,一次写1024个字节吧
 
wanghaiou大侠
能不能告知
具体要怎么改吗
 
我不知道你想要做什么?
图片可以直接存成文件的
 
保存里的 fs.Write(imagestream,Current^.size);
改为 fs.CopyFrom(ImageStream, ImageStream.Size);
读取里的 fs.Read(imagestream,current^.size);

改为 ImageStream.CopyFrom(fs, fs.Size - sizeof(stuffer));
 
谢谢
可以了
送上分数
 
后退
顶部