读书人

怎么把文件夹添加到某个exe文件中

发布时间: 2012-03-09 21:42:55 作者: rapoo

如何把文件夹添加到某个exe文件中?
利用下面的函数可将文件加入到exe中:
Function Cjt_AddtoFile(SourceFile,TargetFile:string):Boolean;
var
Target,Source:TFileStream;
MyFileSize:integer;
begin
try
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareExclusive);
Target:=TFileStream.Create(TargetFile,fmOpenWrite or fmShareExclusive);
try
Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,0);
MyFileSize:=Source.Size+Sizeof(MyFileSize);//计算资源大小,并写入辅程尾部
Target.WriteBuffer(MyFileSize,sizeof(MyFileSize));
finally
Target.Free;
Source.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;
_________________________
那么如何把某文件夹(有文件)添加到exe中呢?当运行exe时将文件夹释放出来

[解决办法]
多写个文件名进文件不就结了
procedure AddtoFile(SourcePath,TargetFile:string); //参数:需要添加的文件路径,目标文件
var
Target,Source:TFileStream;
sr: TSearchRec;
flag:byte;
FileSize:integer;
Filename: array[0..MAX_PATH] of Char;
begin

if SourcePath[Length(SourcePath)] <> '\ ' then SourcePath := SourcePath + '\ ';
Target:=TFileStream.Create(TargetFile,fmOpenWrite or fmShareExclusive);
Target.Seek(0,soFromEnd); //往尾部添加资源
flag:=$ff;
for FileSize:=0 to 4 do
Target.WriteBuffer(flag,sizeof(flag)); //写入连续5个$ff作为标注

if FindFirst(SourcePath+ '*.* ',faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory) <> faDirectory then
begin
try
Source:=TFileStream.Create(SourcePath+sr.Name,fmOpenRead or fmShareExclusive);
Target.CopyFrom(Source,0); //写入文件
FileSize:=Source.Size;
Target.WriteBuffer(FileSize,sizeof(FileSize)); //写入资源大小
FillChar(Filename,Sizeof(Filename),0);
StrPCopy(Filename, sr.Name);
Target.WriteBuffer(Filename,sizeof(Filename)); //写入文件名
finally
Target.Free;
end;
end
until FindNext(sr) <> 0;
FindClose(sr);
end;
Target.Free;
end;

读书人网 >.NET

热点推荐