V
victornb
Unregistered / Unconfirmed
GUEST, unregistred user!
我要把一个自定义的记录和数据库中的jpg数据(blob字段)的信息写入一个文件,
但从文件中取出的数据分割后,原来对应的blob字段中的数据保存为.jpg后,文件大
小没错,就是不能显示原来的图片了,这是怎么回事??难道数据读入TMemoryStream
中后格式就变了吗??郁闷!![]
代码如下:
var
Type
Head=record
AllCount: Integer;
XP: String[1];
end;
SQLStr:String;
FileNO:TFileStream;
TempStream:TMemoryStream;
TempRecard:Head;
i:Integer;
begin
CreateFile;//创建文件
SQLStr := 'Select ZP from T_ZPB ';//zp为blob字段
OpenTempQuery(SQLStr);//打开数据库表
TempHead.TableName := 10;
TempHead.XP := 'Y';
FileNO:=tfilestream.create(FMain.P_FileName,fmOpenWrite);//打开文件
TempStream := TMemoryStream.Create;
try
TempRecard.AllCount:=1;
TempRecard.XP :='Y';
TBlobField(DM.Query_Temp.FieldByName('ZP')).SaveToStream(TempStream);
i := TempStream.Size;
if I = 0 then
ShowMessage('错误的数据!');
FileNO.seek(0,soFromEnd);
FileNO.write(TempRecard,sizeof(TempRecard));
FileNO.seek(0,soFromEnd);
FileNO.write(TempStream,TempStream.Size);
Finally
TempStream.Free;
FileNO.Free;
end;
end;
但从文件中取出的数据分割后,原来对应的blob字段中的数据保存为.jpg后,文件大
小没错,就是不能显示原来的图片了,这是怎么回事??难道数据读入TMemoryStream
中后格式就变了吗??郁闷!![]
代码如下:
var
Type
Head=record
AllCount: Integer;
XP: String[1];
end;
SQLStr:String;
FileNO:TFileStream;
TempStream:TMemoryStream;
TempRecard:Head;
i:Integer;
begin
CreateFile;//创建文件
SQLStr := 'Select ZP from T_ZPB ';//zp为blob字段
OpenTempQuery(SQLStr);//打开数据库表
TempHead.TableName := 10;
TempHead.XP := 'Y';
FileNO:=tfilestream.create(FMain.P_FileName,fmOpenWrite);//打开文件
TempStream := TMemoryStream.Create;
try
TempRecard.AllCount:=1;
TempRecard.XP :='Y';
TBlobField(DM.Query_Temp.FieldByName('ZP')).SaveToStream(TempStream);
i := TempStream.Size;
if I = 0 then
ShowMessage('错误的数据!');
FileNO.seek(0,soFromEnd);
FileNO.write(TempRecard,sizeof(TempRecard));
FileNO.seek(0,soFromEnd);
FileNO.write(TempStream,TempStream.Size);
Finally
TempStream.Free;
FileNO.Free;
end;
end;