Sign in Join
Wiki copytemporary

fcl-res: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: fcl-res

OldNewLine
1+## Overview
2+
3+*fcl-res* is a Free Component Library component that provides functionality to create and access all kinds of resources, including those on:
4+
5+- Windows PE
6+- (Linux) ELF
7+- macOS Mach-O
8+- .res files
9+
10+## Documentation
11+
12+See the XML directory under fcl-res for fpdoc documentation, which includes a nice introduction and tutorial, complete with code examples.
13+
14+You can generate e.g. a CHM file from this using this command in Windows (please adjust file locations):
15+
16+```dos
17+C:\Development\fpctrunk\bin\i386-win32\fpdoc.exe ^
18+--package=fcl-res ^
19+--input=C:\Development\fpctrunk\packages\fcl-res\src\acceleratorsresource.pp ^
20+--input=C:\Development\fpctrunk\packages\fcl-res\src\bitmapresource.pp ^
21+--input=C:\Development\fpctrunk\packages\fcl-res\src\coffconsts.pp ^
22+--input=C:\Development\fpctrunk\packages\fcl-res\src\coffreader.pp ^
23+--input=C:\Development\fpctrunk\packages\fcl-res\src\cofftypes.pp ^
24+--input=C:\Development\fpctrunk\packages\fcl-res\src\coffwriter.pp ^
25+--input=C:\Development\fpctrunk\packages\fcl-res\src\dfmreader.pp ^
26+--input=C:\Development\fpctrunk\packages\fcl-res\src\elfconsts.pp ^
27+--input=C:\Development\fpctrunk\packages\fcl-res\src\elfreader.pp ^
28+--input=C:\Development\fpctrunk\packages\fcl-res\src\elftypes.pp ^
29+--input=C:\Development\fpctrunk\packages\fcl-res\src\elfwriter.pp ^
30+--input=C:\Development\fpctrunk\packages\fcl-res\src\externalreader.pp ^
31+--input=C:\Development\fpctrunk\packages\fcl-res\src\externaltypes.pp ^
32+--input=C:\Development\fpctrunk\packages\fcl-res\src\externalwriter.pp ^
33+--input=C:\Development\fpctrunk\packages\fcl-res\src\fpcrestypes.pp ^
34+--input=C:\Development\fpctrunk\packages\fcl-res\src\groupcursorresource.pp ^
35+--input=C:\Development\fpctrunk\packages\fcl-res\src\groupiconresource.pp ^
36+--input=C:\Development\fpctrunk\packages\fcl-res\src\groupresource.pp ^
37+--input=C:\Development\fpctrunk\packages\fcl-res\src\icocurtypes.pp ^
38+--input=C:\Development\fpctrunk\packages\fcl-res\src\machoconsts.pp ^
39+--input=C:\Development\fpctrunk\packages\fcl-res\src\machoreader.pp ^
40+--input=C:\Development\fpctrunk\packages\fcl-res\src\machotypes.pp ^
41+--input=C:\Development\fpctrunk\packages\fcl-res\src\machowriter.pp ^
42+--input=C:\Development\fpctrunk\packages\fcl-res\src\resdatastream.pp ^
43+--input=C:\Development\fpctrunk\packages\fcl-res\src\resfactory.pp ^
44+--input=C:\Development\fpctrunk\packages\fcl-res\src\resmerger.pp ^
45+--input=C:\Development\fpctrunk\packages\fcl-res\src\resource.pp ^
46+--input=C:\Development\fpctrunk\packages\fcl-res\src\resourcetree.pp ^
47+--input=C:\Development\fpctrunk\packages\fcl-res\src\resreader.pp ^
48+--input=C:\Development\fpctrunk\packages\fcl-res\src\reswriter.pp ^
49+--input=C:\Development\fpctrunk\packages\fcl-res\src\stringtableresource.pp ^
50+--input=C:\Development\fpctrunk\packages\fcl-res\src\strtable.pp ^
51+--input=C:\Development\fpctrunk\packages\fcl-res\src\tlbreader.pp ^
52+--input=C:\Development\fpctrunk\packages\fcl-res\src\versionconsts.pp ^
53+--input=C:\Development\fpctrunk\packages\fcl-res\src\versionresource.pp ^
54+--input=C:\Development\fpctrunk\packages\fcl-res\src\versiontypes.pp ^
55+--input=C:\Development\fpctrunk\packages\fcl-res\src\winpeimagereader.pp ^
56+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\acceleratorsresource.xml ^
57+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\bitmapresource.xml ^
58+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\coffreader.xml ^
59+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\cofftypes.xml ^
60+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\coffwriter.xml ^
61+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\dfmreader.xml ^
62+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfconsts.xml ^
63+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfreader.xml ^
64+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\elfwriter.xml ^
65+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externalreader.xml ^
66+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externaltypes.xml ^
67+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\externalwriter.xml ^
68+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupcursorresource.xml ^
69+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupiconresource.xml ^
70+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\groupresource.xml ^
71+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machoreader.xml ^
72+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machotypes.xml ^
73+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\machowriter.xml ^
74+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resdatastream.xml ^
75+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resfactory.xml ^
76+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resource.xml ^
77+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resourcetree.xml ^
78+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\resreader.xml ^
79+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\reswriter.xml ^
80+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\stringtableresource.xml ^
81+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versionconsts.xml ^
82+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versionresource.xml ^
83+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\versiontypes.xml ^
84+--descr=C:\Development\fpctrunk\packages\fcl-res\xml\winpeimagereader.xml ^
85+--format=chm ^
86+--auto-index ^
87+--auto-toc ^
88+--make-searchable ^
89+--output=fcl-res.chm
90+```
91+
92+## Examples
93+
94+The resource unit is used in fpcres, a resource management tool, in \$(fpcdir)\utils\fpcres\sourcehandler.pas
95+
96+See also the examples in the help file, e.g.
97+
98+``` pascal
99+program converttosparc;
100+// slightly modified from fcl-res help file program res3 (mainly comments).
101+// This program reads a supported resource file (and autodetects the resource type)
102+// then writes to a specific format - in this case SPARC ELF.
103+{$mode objfpc}
104+
105+uses
106+ Classes, SysUtils, resource,
107+// You need to specify which resources you want to be able to read.
108+// The units initialize themselves and register themselves as readers....
109+ resreader, coffreader, elfreader, winpeimagereader,
110+//... same goes for writers
111+ elfwriter,
112+// elfwriter needs its constants unti:
113+ elfconsts;
114+
115+var
116+ resources : TResources;
117+ writer : TElfResourceWriter;
118+ reader : TAbstractResourceReader;
119+ inFile : TFileStream;
120+
121+begin
122+ resources:=TResources.Create;
123+ inFile:=TFileStream.Create(paramstr(1), fmOpenRead or fmShareDenyNone);
124+ // Use FindReader to let TResources find the appropriate reader for the file
125+ reader:=TResources.FindReader(inFile);
126+ writeln('Selected reader: ',reader.Description);
127+ resources.LoadFromStream(inFile,reader);
128+ writer:=TElfResourceWriter.Create;
129+ writer.MachineType:=emtsparc;
130+ resources.WriteToFile(ChangeFileExt(paramstr(1),'.o'),writer);
131+
132+ // clean up - adding try..except blocks would be nice:
133+ resources.Free;
134+ reader.Free;
135+ writer.Free;
136+ inFile.Free;
137+end.
138+```
139+
140+## Getting file version information
141+
142+See: [[Show Application Title, Version, and Company]]
143+
144+## See also
145+
146+- [[Lazarus Resources|Description of using FPC and Lazarus resources]]
147+- [[lazres|Lazarus Resource compiler]]
148+- [[IDE Window: Project Options|IDE Project Options > Resources]]
149+- [[Package List]]
150+
151+---
152+*From the Free Pascal wiki, page "fcl-res", as it stood on 2020-08-13 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
153+Category: FCL
154+Category: FPC
155+Category: Packages

Back to history