文件大人请入
小弟对stream不太懂,上次发一个个贴子求文件压缩的用法,后来达人们给我一个函数,但是我用起来都是报错,再请达人们指点。
function MyZip(InFlName, OutFlName: string): integer;
var
InFile, outfile: TFilestream;
ZStream: TCustomZLibStream;
begin
InFile := TFileStream.Create(InFlName, fmOpenRead);
try
OutFile := TFileStream.Create(OutFlName, fmCreate);
try
ZStream := TCompressionStream.Create(clFastest, OutFile);
try
ZStream.CopyFrom(InFile, 0);
finally
ZStream.Free;
end;
finally
result := outfile.Size;
OutFile.Free;
end;
finally
InFile.Free;
end;
end;
procedure MyUnZip(InFlName, OutFlName: string);
const
buffersize = 1024;
var
InFile: TStream;
OutFile: TStream;
ZStream: TCustomZLibStream;
begin
InFile := TFileStream.Create(InFlName, fmOpenRead);
try
OutFile := TFileStream.Create(OutFlName, fmCreate);
try
ZStream := TDecompressionStream.Create(InFile);
try
OutFile.CopyFrom(ZStream, 0);
finally
ZStream.Free;
end;
finally
OutFile.Free;
end;
finally
InFile.Free;
end;
.
.
.
procedure Tmain.Button1Click(Sender: TObject);
begin
Showmessage(inttostr(MyZip('.\ftp.ini','.\ftp.zip')));
end;
procedure Tmain.Button2Click(Sender: TObject);
begin
MyUnZip('.\ftp.zip','.\send\ftp.ini');
end;
在压缩的时候正常,但是在解压的时候运行到
OutFile.CopyFrom(ZStream, 0);
的时候报错:
"Invalid stream Operation"
各位达人请帮帮我吧.