Delphi中,如何读取资源文件?我有个html文本,加载到当前的project中,那么在程序运行过程中,如何才能将这个html文本的内容读取到一个String中?使用CreateFile、LoadFileStream等函数只能读取硬盘中的文件。另外,如何将一个可执行文件加载到project中,再在运行过程中,将这个可执行文件读取出来?

解决方案 »

  1.   

    一个简单的例子:
    新建一个文本文档,随便添加些内容,命名为:index.htm
    新建一个文本文档,添加以下内容:CrnIndexHtml RC_DATA "index.htm"然后保存为1.rc把上面的1.rc添加到工程中,然后在窗体上放置一个Memo和一个Button,在Button的点击事件中:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        rs: TResourceStream;
    begin
        rs := TResourceStream.Create(HInstance, 'CrnIndexHtml', 'RC_DATA');
        rs.Position := 0;
        Memo1.Lines.LoadFromStream(rs);
        rs.Free;
    end;编译,就可以看到效果。以上代码实现的从资源中读取Htm资源,并将内容读取到Memo中。
      

  2.   

    至于将可执行文件放到资源中,这样做:准备一个exe文件,比如123.exe,放到工程目录下,编辑刚才的1.rc文件,添加一行:CrnExeFile RC_DATA "123.exe"然后在程序中:
    procedure TForm1.Button2Click(Sender: TObject);
    var
        rs: TResourceStream;
    begin
        rs := TResourceStream.Create(HInstance, 'CrnExeFile', 'RC_DATA');
        rs.SaveToFile('c:\ccrun\123.exe');
        ShellExecute(Handle, 'Open', 'C:\ccrun\123.exe', nil, nil, SW_SHOW);
        rs.Free;
    end;实际应用中,可以将资源中的文件释放到某个比较隐蔽的目录中。
      

  3.   

    不知vividw(vividw)所说的方法如何具体如何实现?