Difference between revisions of "fcl-res"
From Lazarus wiki
Jump to navigationJump to searchm (Fixed syntax highlighting; typos) |
|||
Line 1: | Line 1: | ||
== Overview == | == Overview == | ||
− | ''fcl-res'' is a Free Component Library component that provides functionality to create and access all kinds of resources, including those on | + | |
+ | ''fcl-res'' is a Free Component Library component that provides functionality to create and access all kinds of resources, including those on: | ||
+ | |||
* Windows PE | * Windows PE | ||
* (Linux) ELF | * (Linux) ELF | ||
− | * | + | * macOS Mach-O |
* .res files | * .res files | ||
== Documentation == | == Documentation == | ||
+ | |||
See the XML directory under fcl-res for fpdoc documentation, which includes a nice introduction and tutorial, complete with code examples. | See the XML directory under fcl-res for fpdoc documentation, which includes a nice introduction and tutorial, complete with code examples. | ||
You can generate e.g. a CHM file from this using this command in Windows (please adjust file locations): | You can generate e.g. a CHM file from this using this command in Windows (please adjust file locations): | ||
− | <syntaxhighlight lang= | + | |
+ | <syntaxhighlight lang="dos"> | ||
C:\Development\fpctrunk\bin\i386-win32\fpdoc.exe ^ | C:\Development\fpctrunk\bin\i386-win32\fpdoc.exe ^ | ||
--package=fcl-res ^ | --package=fcl-res ^ | ||
Line 87: | Line 91: | ||
== Examples == | == Examples == | ||
+ | |||
The resource unit is used in fpcres, a resource management tool, in $(fpcdir)\utils\fpcres\sourcehandler.pas | The resource unit is used in fpcres, a resource management tool, in $(fpcdir)\utils\fpcres\sourcehandler.pas | ||
See also the examples in the help file, e.g. | See also the examples in the help file, e.g. | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang="pascal"> | ||
program converttosparc; | program converttosparc; | ||
// slightly modified from fcl-res help file program res3 (mainly comments). | // slightly modified from fcl-res help file program res3 (mainly comments). | ||
Line 133: | Line 139: | ||
== Getting file version information == | == Getting file version information == | ||
− | |||
− | [[ | + | See: [[Show_Application_Title,_Version,_and_Company|Show Application Title, Version, and Company]] |
+ | |||
+ | == See also == | ||
+ | * [[Package List]] | ||
[[Category:FPC]] | [[Category:FPC]] | ||
[[Category:FCL]] | [[Category:FCL]] | ||
[[Category:Packages]] | [[Category:Packages]] |
Revision as of 07:27, 14 January 2020
Overview
fcl-res is a Free Component Library component that provides functionality to create and access all kinds of resources, including those on:
- Windows PE
- (Linux) ELF
- macOS Mach-O
- .res files
Documentation
See the XML directory under fcl-res for fpdoc documentation, which includes a nice introduction and tutorial, complete with code examples.
You can generate e.g. a CHM file from this using this command in Windows (please adjust file locations):
C:\Development\fpctrunk\bin\i386-win32\fpdoc.exe ^
--package=fcl-res ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\acceleratorsresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\bitmapresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\coffconsts.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\coffreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\cofftypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\coffwriter.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\dfmreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\elfconsts.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\elfreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\elftypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\elfwriter.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\externalreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\externaltypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\externalwriter.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\fpcrestypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\groupcursorresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\groupiconresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\groupresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\icocurtypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\machoconsts.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\machoreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\machotypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\machowriter.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resdatastream.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resfactory.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resmerger.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resourcetree.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\resreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\reswriter.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\stringtableresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\strtable.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\tlbreader.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\versionconsts.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\versionresource.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\versiontypes.pp ^
--input=C:\Development\fpctrunk\packages\fcl-res\src\winpeimagereader.pp ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\acceleratorsresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\bitmapresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\coffreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\cofftypes.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\coffwriter.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\dfmreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfconsts.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfwriter.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externalreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externaltypes.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externalwriter.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupcursorresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupiconresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machoreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machotypes.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machowriter.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resdatastream.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resfactory.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resourcetree.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resreader.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\reswriter.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\stringtableresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versionconsts.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versionresource.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versiontypes.xml ^
--descr=C:\Development\fpctrunk\packages\fcl-res\xml\winpeimagereader.xml ^
--format=chm ^
--auto-index ^
--auto-toc ^
--make-searchable ^
--output=fcl-res.chm
Examples
The resource unit is used in fpcres, a resource management tool, in $(fpcdir)\utils\fpcres\sourcehandler.pas
See also the examples in the help file, e.g.
program converttosparc;
// slightly modified from fcl-res help file program res3 (mainly comments).
// This program reads a supported resource file (and autodetects the resource type)
// then writes to a specific format - in this case SPARC ELF.
{$mode objfpc}
uses
Classes, SysUtils, resource,
// You need to specify which resources you want to be able to read.
// The units initialize themselves and register themselves as readers....
resreader, coffreader, elfreader, winpeimagereader,
//... same goes for writers
elfwriter,
// elfwriter needs its constants unti:
elfconsts;
var
resources : TResources;
writer : TElfResourceWriter;
reader : TAbstractResourceReader;
inFile : TFileStream;
begin
resources:=TResources.Create;
inFile:=TFileStream.Create(paramstr(1), fmOpenRead or fmShareDenyNone);
// Use FindReader to let TResources find the appropriate reader for the file
reader:=TResources.FindReader(inFile);
writeln('Selected reader: ',reader.Description);
resources.LoadFromStream(inFile,reader);
writer:=TElfResourceWriter.Create;
writer.MachineType:=emtsparc;
resources.WriteToFile(ChangeFileExt(paramstr(1),'.o'),writer);
// clean up - adding try..except blocks would be nice:
resources.Free;
reader.Free;
writer.Free;
inFile.Free;
end.
Getting file version information
See: Show Application Title, Version, and Company