This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.
Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.
We can use the IsMatching method of TPJResourceEntry to check if a specific resource matches some given criteria. IsMatching can match just a resource type, a resource type and name or it can uniquely identify a resource in a file by matching its type, name and language id.
Like TPJResourceFile.FindEntry, the language id parameter is optional. The resource name parameter can be nil if we don’t want to specify the resource name in the match.
Using IsMatching, we can list all the
RT_HTML resources from a resource file in a TMemo control with this code:
var ResFile: TPJResourceFile; Entry: TPJResourceEntry; Idx: Integer; begin ... // Assume ResFile contains a loaded resource file ... for Idx := 0 to Pred(ResFile.EntryCount) do begin Entry := ResFile.Entries[Idx]; if Entry.IsMatching(RT_HTML, nil) then Memo1.Lines.Add( Format('%s', [ResIDToStr(Entry.ResName)]) ); end; ... end;
To list just the different language versions of the
RT_HTML resource named
'INDEX_HTML' we simply change the IsMatching method call in the for loop to:
Finally, to list all the
RT_HTML resources with language id
$0809, regardless of name, we can pass
nil as the ResName parameter and specify the language id as the final parameter. With these changes the IsMatching method call becomes:
Entry.IsMatching(RT_HTML, nil, $0809)