[fpc-pascal] Reading resources

Juha Manninen juha.manninen62 at gmail.com
Sun Jul 19 19:24:39 CEST 2015


Lazarus examples folder has an application ResExplorer made by Alexey Lagunov.
It does not work well, images and other resource contents are not
shown. Only the resource name shows correctly.
It uses FPC resource classes. How to use them properly? I am testing
now with FPC trunk but 2.6.4 works the same way.

Simplified code when a Windows executable is read :

  Reader:=TWinPEImageResourceReader.Create;
  Res:=TResources.Create;
  Res.LoadFromFile(AFileName, Reader);

The items (TAbstractResource) of "Res" are stored in a TreeView and
later shown when nodes are clicked :

var
  ResItem: TAbstractResource;
...
    if ResItem is TVersionResource then
      LoadVersionResource(ResItem as TVersionResource)
    else
    if ResItem is TBitmapResource then
      LoadBitmapResource(ResItem as TBitmapResource)
    else
    if ResItem is TGroupIconResource then
      LoadGroupIconResource(ResItem as TGroupIconResource)


The problem is that TBitmapResource never happens, although most of
the resources contain images.
ResItem is TGenericResource then.

LoadGroupIconResource does happen but viewing it is not implemented.
TVersionResource is the only one that really shows.

I have an idea to make a proper resource manager application
supporting reading, writing and modifying both FPC *.res and the old
Lazarus *.lrs resources. This ResExplorer would be a good starting
point if only it worked.
Is there such code already somewhere? I don't want to do duplicate work.

Regards,
Juha



More information about the fpc-pascal mailing list