记录文件的操作问题??? ( 积分: 50 )

  • 主题发起人 主题发起人 huaduxu
  • 开始时间 开始时间
H

huaduxu

Unregistered / Unconfirmed
GUEST, unregistred user!
新建以下
type
Tmyback = record
Accsetid: Integer; //帐套编号
Accname: string[30]; //帐套名称
Corpname: string[50]; //公司名称
Accdisplay:Boolean; //是否显示
Dbname: string[20]; //数据库名称
dbzip:Pointer;//数据库压缩
end;

TFrmacc = class(TForm)
Panel1: TPanel;
Panel2: TPanel;

在操作中
mdbpath:=extractfilepath(paramstr(0))+myDbname; //得到数据库文件名
ms:= TMemoryStream.Create;
try
ms.LoadFromFile(mdbpath);//加载数据库进入内存流
CompressStream(ms);//压缩内存流
ms.Position:=0;
mydbzip:=ms.Memory;//将压缩后的内存流数据传递给mydbzip
//ms.SaveToFile('c:/tt.zip');
finally
ms.Free;
end;

AssignFile(backdat, 'c:/myback.dat');
if FileExists('c:/myback.dat') then
Reset(backdat)
else
Rewrite(backdat);//以下为将相关数据传递到记录文件中,
myback.Accsetid:=myAccsetid;
myback.Accname:= myAccname;
myback.Corpname:= myCorpname;
myback.Accdisplay:= myAccdisplay;
myback.Dbname:= myDbname;
myback.dbzip:= mydbzip;
try
try
Write(backdat,myback); //将myback记录写入到文件中
finally
CloseFile(backdat);
end;
Application.Messagebox('备份数据库成功','提示信息',MB_OK+Mb_IconQuestion);
except
Application.Messagebox('备份数据库失败','提示信息',MB_OK+Mb_IconQuestion);
end;
在实际操作中没有报警,但写入到myback.dat文件中的没有myback.dbzip部分,问题可能出现在: mydbzip:=ms.Memory;//将压缩后的内存流数据传递给mydbzip,
但我又不知道怎么操作Pointer,请专家指教.
 
流不是这样赋值的. 看下面的
Loads the entire contents of a stream into the memory buffer.
Delphi syntax:
procedure LoadFromStream(Stream: TStream);
 
用copyfrom赋值给mydbzip
 
怎么用copyfrom赋值???能详细说明吗?
 
流已经能生成,并能压缩,可以用//ms.SaveToFile('c:/tt.zip');
保存为压缩文件
 
用二进制流操作,不要用文字流。直接把记录的内存写到文件里。
 
BlockWrite

BlockRead
 
dangde,0桁骀,
能说清楚吗?最好用代码演示
 
谢谢各位的帮助
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部