【发布时间】:2011-01-11 22:21:15
【问题描述】:
基于here、here 和here 等示例,我正在尝试在项目中包含 SVN 修订信息。 svn info 调用的结果存储在rev.txt(它是一个普通的 ansi 文件)。我的revinfo.rc 看起来像这样:
REV_TEXT TEXT rev.txt
我的项目如下所示:
unit rev;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{$R revinfo.res}
procedure TForm2.Button1Click(Sender: TObject);
var
RS : TResourceStream;
MyStr : AnsiString;
begin
RS := TResourceStream.Create(hInstance, 'REV_TEXT', RT_RCDATA);
SetLength(MyStr, RS.Size);
RS.Read(MyStr[1], RS.Size);
RS.Free;
Memo1.Text := MyStr;
end;
end.
项目编译,换句话说,资源文件本身由编译器定位(或者说它是链接器?)。反正;当执行TResourceStream.Create(hInstance, 'REV_TEXT', RT_RCDATA); 语句时,我得到一个EResNotFound 异常,抱怨它找不到资源REV_TEXT。我可以确认资源文件编译满意,包含rev.txt 文本文件的内容。有没有人能够重现我的麻烦?
顺便说一句:我也尝试过使用索引版本的 TResourceStream 构造函数,但我不知道要使用哪个索引(尝试了 0、1 和 2 无济于事)。
非常感谢您的帮助! :)
【问题讨论】: