📄 publicunit.pas
字号:
unit PublicUnit;
interface
uses
Classes,SysUtils;
//声明两个函数
//Cjt_AddtoFile作用是把原文件(ExeFile)内容追加到
//口令询问文件(HeadFile)后面
// Cjt_LoadFromFile作用是从加密后的文件(FullExeFile)中提取出原先的文件
Function Cjt_AddtoFile(ExeFile,HeadFile:string):Boolean;
Function Cjt_LoadFromFile(FullExeFile,RealExeFile :string):Boolean;
implementation
Function Cjt_AddtoFile(ExeFile,HeadFile:string):Boolean;
var
HaedFStream,ExeFStream:TFileStream;
MyFileSize:integer;
begin
try
//建立源文件流
ExeFStream:=TFileStream.Create(ExeFile,fmOpenRead or fmShareExclusive);
//建立目标文件流
HaedFStream:=TFileStream.Create(HeadFile,fmOpenWrite or fmShareExclusive);
try
//把HaedFStream位置指针置于尾部,此状态下输入流中的内容从尾部开始排列
HaedFStream.Seek(0,soFromEnd);
//把Source文件的所有内容输入到HaedFStream中,经过此操作后文件ExeFile中的所有
//内容就合并到了HeadFile 文件中
HaedFStream.CopyFrom(ExeFStream,0);
//将ExeFile文件的大小加存储一个整形变量所需的字节数(四字节)存放到MyFileSize
//中
MyFileSize:=ExeFStream.Size+Sizeof(MyFileSize);
//写入依次放在流中的ExeFile ,sizeof(MyFileSize)总和的大小
//存放在末尾的四个字节中
HaedFStream.WriteBuffer(MyFileSize,sizeof(MyFileSize));
finally
HaedFStream.Free;
ExeFStream.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;
Function Cjt_LoadFromFile(FullExeFile,RealExeFile :string):Boolean;
var
Source:TFileStream;
Target:TMemoryStream;
MyFileSize:integer;
begin
try
Target:=TMemoryStream.Create;//
Source:=TFileStream.Create(FullExeFile,fmOpenRead or fmShareDenyNone);
try
Source.Seek(-sizeof(MyFileSize),soFromEnd);
Source.ReadBuffer(MyFileSize,sizeof(MyFileSize));//读出资源大小
Source.Seek(-MyFileSize,soFromEnd);//定位到资源位置
Target.CopyFrom(Source,MyFileSize-sizeof(MyFileSize));//取出资源
Target.SaveToFile(RealExeFile);//存放到文件
finally
Target.Free;
Source.Free;
end;
except
Result:=false;
Exit;
end;
Result:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -