このブログはLazarus(FreePascal)アドベントカレンダー3日目の記事です。
Lazarusでリソースを使う画像やアイコン、スクリプトファイルなどのファイルはリソースとしてプロジェクトに取り込んでおくと便利です。
Lazarusで扱えるリソースには2種類があります。
- resファイル:プロジェクトオプションから追加できるリソース形式。TResourceStreamオブジェクトで読み込みが可能。
- lrsファイル:LazResというユーティリティファイルによって生成するリソース形式。LazarusResourcesというTLResourceList型のオブジェクトにより取得が可能。
どちらもリソースの名前を指定することができるという点では同じですが、resファイル形式はn番目のリソース取得したり、リソースの名前一覧を取得することができない(っぽい)のに対し、lrsファイルはリソースの個数を取得したり、n番目のリソースを取得するなどといったことができます。
res形式 | lrs形式 | |
---|---|---|
作成方法 | プロジェクトオプションより | LazResユーティリティより |
読み取り方法 | TResourceStreamを使う | LazarusResourceを使う |
クラスの定義ユニット | Classes | LResources |
for文で走査 | できない | できる |
TResourceStreamはTStreamの子オブジェクトなので、画像などのバイナリファイルを基本に、内部のスクリプトファイルなどにはLazarusResourcesを使うと良いでしょう。
LazResをいちいち呼ぶのが面倒くさい
LazResユーティリティはLazarusインストールディレクトリの\tools\lazres.exe
にあります。そこで、プロジェクトオプションより起動前にpython .\resourcemaker.py --lazarus_dir $(LazarusDir)
などとしてリソースを整理するためのスクリプトを実行しておくと良いでしょう。実例は以下のあたりを参照。
lrsファイルの中身が古い?
なお、とくにlrs形式の場合、ファイルをせっかく書き換えたのになぜか参照されるリソースファイルが古い ということがあります。
どうもlrs形式の場合、ただ「実行」しただけではlrsが更新されないことがあるようです。
コンパイルまたは構築を実行してみましょう。