この質問、具体的には、次の文について、いくつかの調査を行っていました。
IOTAProject からこのインターフェイスを取得することさえできませんでした。
繰り返しになりますが、Erik Berry によって概説された Delphi 2005 および 2006 に存在するよく知られた欠陥を意味します。完全なテストケースについては、リンクされた QC エントリにアクセスしてください。
十分な言葉、これが私のコードです:
procedure TResDumpWizard.Execute;
var
Project: IOTAProject;
Resource: IOTAProjectResource;
I: Integer;
Entry: IOTAResourceEntry;
begin
Project := (BorlandIDEServices as IOTAModuleServices).GetActiveProject;
Assert(Assigned(Project), 'No active project');
Resource := nil;
for I := 0 to Project.ModuleFileCount - 1 do
begin
if Supports(Project.ModuleFileEditors[I], IOTAProjectResource, Resource) then
Break;
end;
Assert(Assigned(Resource), 'No resources in project'); // (!!!) always fails
for I := 0 to Resource.GetEntryCount - 1 do
begin
Entry := Resource.GetEntry(I);
(BorlandIDEServices as IOTAMessageServices).AddTitleMessage(DisplayName(Entry.GetResourceName));
end;
end;
プロジェクトのモジュール ファイル エディターをループすると、プロジェクトに追加のリソースがある場合でも、リソースが見つかりません。
- [リソースと画像] ダイアログで追加
{$RESOURCE binary.res}ディレクティブの使用機能しなくなった{$R filename.res filename.rc}構文を使用する