var
A:TMemoryStream;
B:TMemoryStream;
begin
A:=TMemoryStream.Create;
A.LoadFromFile('c:\ddds.exe');
B:=TMemoryStream.Create;
B.LoadFromFile('c:\dd.exe');
//B文件流是A文件流中的一部分,但不知道B文件流在A文件流的那个位置,如何查找到B在A中的位置呢?
end;
请高手帮助.
A:TMemoryStream;
B:TMemoryStream;
begin
A:=TMemoryStream.Create;
A.LoadFromFile('c:\ddds.exe');
B:=TMemoryStream.Create;
B.LoadFromFile('c:\dd.exe');
//B文件流是A文件流中的一部分,但不知道B文件流在A文件流的那个位置,如何查找到B在A中的位置呢?
end;
请高手帮助.
OutFile: TFileStream; // 输出文件
MySelf: TFileStream; // 读取自身文件
SourceFile: TFileStream; // 读取被捆绑文件
SelfFileInfo, FirstFileInfo, SecondFileInfo: TFilesInfo; // 记录被捆绑文件信息
begin
// 捆绑文件 // 初始化SelfFileInfo,FirstFileInfo,SecondFileInfo结构
FillChar(SelfFileInfo, sizeof(TFilesInfo), #0);
FillChar(FirstFileInfo, sizeof(TFilesInfo), #0);
FillChar(SecondFileInfo, sizeof(TFilesInfo), #0);
// 打开自身并读取
MySelf := TFileStream.Create(Application.ExeName, fmOpenRead or fmShareDenyNone);
// 获取自身文件大小
SelfFileInfo.FileSize := MySelf.Size;
SelfFileInfo.FileName := 'Bind'; // 打上标志
// 创建输出文件
OutFile := TFileStream.Create(Edit3.Text, fmCreate or fmOpenWrite);
// 将自身文件保存在输出文件的最前面
OutFile.CopyFrom(MySelf, 0); // 第二个参数为0时表示复制整个内容
// 关闭打开的自身文件
MySelf.Free;
// 打开第一个要捆绑的文件
SourceFile := TFileStream.Create(Edit1.Text, fmOpenRead or fmShareDenyNone);
// 获取第一个要捆绑文件的文件名及大小
StrPCopy(FirstFileInfo.FileName, ExtractFileName(Edit1.Text));
FirstFileInfo.FileSize := SourceFile.Size;
// 将第一个文件的内容追加在输出文件后
OutFile.CopyFrom(SourceFile, 0);
// 关闭第一个文件
SourceFile.Free;
// 打开第二个要捆绑的文件
SourceFile := TFileStream.Create(Edit2.Text, fmOpenRead or fmShareDenyNone);
// 获取第二个要捆绑文件的文件名及大小
StrPCopy(SecondFileInfo.FileName, ExtractFileName(Edit2.Text));
SecondFileInfo.FileSize := SourceFile.Size;
// 将第二个文件的内容追加在输出文件后
OutFile.CopyFrom(SourceFile, 0);
// 关闭第二个文件
SourceFile.Free;
// 将被捆绑文件信息写在输出文件末尾
OutFile.Write(SelfFileInfo, sizeof(TFilesInfo));
OutFile.Write(FirstFileInfo, sizeof(TFilesInfo));
OutFile.Write(SecondFileInfo, sizeof(TFilesInfo)); // 关闭输出文件完成捆绑
OutFile.Free;
SelfFileInfo, FirstFileInfo, SecondFileInfo: TFilesInfo; // 记录被捆绑文件信息
这句有点问题吧。TFilesInfo应该改为:TFilesInfos