長い文章をリソースに組み込むときなど、
resourcestringでは足りないときに、テキストファイルそのものをリソースに入れることはできるでしょうか?
VBではたしか、カスタムリソースとして、バイナリファイル扱いで入れることができたんですけど、
Delphiでもそういうことはできますか?
また、できるとしたら、いいツールとかはないでしょうか?
CUIのBRCC32を使って、リソースファイルをコンパイルできます。
あとは{$R 上で作ったリソースファイル名.RES}
として、リソースを読み込むAPIで読み込んで使います。
ええと、大体はわかりました。
けど、リソースを呼び出すAPIとはどれですか?
ところで、コンパイルはプロジェクトのものと一緒にやってくれるのでは?
自分でリソースを追加したことはないのでわかりませんけど、
rcファイルのままではだめなんですか?
もしかしたら、.rcファイルをプロジェクトに追加するだけでいいのかもしれません。
# 追加時の「ファイルの種類」にあった気がする
APIは、
EnumResource, FindResource, LoadResource, FreeResource
などです。
呼び出しはこんな感じになります。
var
hRes: THandle;
hMem: HGLOBAL;
begin
hRes := FindResource(hInstance, 'test', RT_RCDATA);
hMem := LoadResource(hInstance, hRes);
Memo1.Lines.Text := string(PChar(hMem));
FreeResource(hRes);
end;
これでMemo1に、リソースのRCDATA "test"が読み込めます。
"test"がない場合のエラー処理などはないので、適当に追加してください。
ありがとうございます。早速試してみます。
今どうもほかのところでトラブルが起きていて試せないんですけど、
確認したら書きます。
それから、どうやらrcファイルのままでもいいようです。
"プロジェクトにファイルを追加"で、rcファイルを追加すると、
rcファイルをresファイルにコンパイルするように記述しているようです。
うーん…。それが原因か、
プロジェクト MuseAssistantAlpha.exe が EReadError クラスの例外を生成しました。
'ストリームからの ImageList データの読み込みに失敗しました'
なんてエラーが、実行時にだけ発生するんです。
リソースエディタで実行ファイルをのぞいてみても、特に問題はないんですけど…。
アドバイスお願いできませんか?
リソースを組み込む順番を変えてみてはどうですか?
プロジェクトソースに並んでいる順番を変えてみるとか、リソースの名前を変更してみるとか。
> リソースを組み込む順番を変えてみてはどうですか?
だめでした…。
{%File 'Script\Refalance.txt'}
{%File 'Template.txt'}
{$R *.res}
{$R 'custom.res' 'custom.rc'}
を
{$R 'custom.res' 'custom.rc'}
{$R *.res}
こうしたり、files.rcと変えてみたりしたんですけど、
Application.CreateForm の行でおなじエラーになります。
よくみると、ImageListの中身が、リソースエディタを見つからなかったんですけど、
それも、ここにあるTokikazeで、"Pictureオブジェクトから〜"にありました。
そういえば忘れてましたけど、今の作業環境は
WindowsXP Home Delphi6Personal(Windows2000互換モード)です。
これとなにか関係あるんでしょうか?
正常なexeファイルと見比べると、
imagelistの絵の並び順が違ったような…。
(正常なのは横に4つずつ、表のように並べているのに対して、
これは横には並べず、1つずつ縦に並べてました)
TImageListの中身は、Delphi標準の方法でリソースに入ってると言うことでしょうか。
ふつうにLoadResource, LockResourceして、それをLoadFromResourceIDメソッドでTImageListに登録してみてはどうですか?
> TImageListの中身は、Delphi標準の方法でリソースに入ってると言うことでしょうか。
うーん…。
>imagelistの絵の並び順が違ったような…。
ということで、ほんとに標準…というわけでもない気がしますが…。
具体的に言うと、こうなっているのです。
○正常のリソース
1234
5678
9101112
……
○エラーの起こったりソース
1
2
3
4
5
…
…
新しくリソースを追加したのが原因ではないような気がします。
もっといろいろ探して回ったほうがいいかもしれませんね…。
ううーん、このままではお礼もしないまま流れていってしまいそうなので、
とりあえずテキストのリソース組み込みだけはできました。ありがとうございます。
ImageListがおかしいのはかわらずですから、実行はできないのですけど。
ツイート | ![]() |