已经做好了一个资源文件,里面包含有若干二进制文件,我有TResourceStream来实现资源的释放,问题就在这里,我现在用的格式是
      if FileExists('C:\a.exe') then
      begin
        rs:=TResourceStream.Create(HInstance,'a.exe','exefile');
        rs.SaveToFile('C:\a.exe');
        rs.Free;
      end;
      if FileExists('C:\b.exe') then
      begin
        rs:=TResourceStream.Create(HInstance,'b.exe','exefile');
        rs.SaveToFile('C:\b.exe');
        rs.Free;
      end;
      if FileExists('C:\c.exe') then
      begin
        rs:=TResourceStream.Create(HInstance,'c.exe','exefile');
        rs.SaveToFile('C:\c.exe');
        rs.Free;
      end;
总感觉不是很好,每次都要构造新的对象,能不能在原来对象的基础上继续读资源的方法?

解决方案 »

  1.   

    上面的判断语句统一加上not,刚才忘记写了
      

  2.   

    把公用的部分写成一个函数procedure ExportResToFile(const ResName, ResType, FileName: string); 
    var 
     Res: TResourceStream; 
    begin 
     if not FileExists(FileName) then
     begin
       Res:= TResourceStream.Create(HInstance, ResName, PChar(ResType)); 
       try 
         Res.SaveToFile(FileName); //将资源保存为文件,即还原文件 
       finally 
         Res.Free; 
       end; 
      end;
    end;