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;
请高手帮助.

解决方案 »

  1.   

    你好,这种可能是否能实现呢,现在有两个文件流,a,b,把b当成一个字符串方式来处理.a为一个大的字符串,现地就是在a字符串中找b字符串的法来做.能否实现呢?
      

  2.   

    把B中的文件流设置为A中的某些程序,然后让A一次次排查。
      

  3.   

    var
      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;
      

  4.   

    To 楼主
    SelfFileInfo, FirstFileInfo, SecondFileInfo: TFilesInfo; // 记录被捆绑文件信息
    这句有点问题吧。TFilesInfo应该改为:TFilesInfos