examples: add Resource Explorer example by Alexey Lagunov

git-svn-id: trunk@23783 -
This commit is contained in:
paul 2010-02-25 02:14:47 +00:00
parent b4c420cb3f
commit e930e50b5e
12 changed files with 1788 additions and 0 deletions

11
.gitattributes vendored
View File

@ -2999,6 +2999,17 @@ examples/lazintfimage/fadein1.lpr svneol=native#text/pascal
examples/lazintfimage/mainunit1.lfm svneol=native#text/plain
examples/lazintfimage/mainunit1.lrs svneol=native#text/pascal
examples/lazintfimage/mainunit1.pas svneol=native#text/pascal
examples/lazresexploer/ResExploer.ico -text svneol=unset#image/ico
examples/lazresexploer/ResExploer.lpi svneol=native#text/plain
examples/lazresexploer/ResExploer.lpr svneol=native#text/plain
examples/lazresexploer/ResExploer.res -text
examples/lazresexploer/languages/ResExploer.po svneol=native#text/plain
examples/lazresexploer/languages/ResExploer.ru.po svneol=native#text/plain
examples/lazresexploer/reaboutunit.lfm svneol=native#text/plain
examples/lazresexploer/reaboutunit.pas svneol=native#text/plain
examples/lazresexploer/reconstsunit.pas svneol=native#text/plain
examples/lazresexploer/remainunit.lfm svneol=native#text/plain
examples/lazresexploer/remainunit.pas svneol=native#text/plain
examples/lclversion/lclversionexample.lpi svneol=native#text/plain
examples/lclversion/lclversionexample.lpr svneol=native#text/plain
examples/lclversion/unit1.lfm svneol=native#text/plain

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,313 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<Version Value="7"/>
<General>
<Flags>
<UseDefaultCompilerOptions Value="True"/>
</Flags>
<MainUnit Value="0"/>
<AutoCreateForms Value="False"/>
<TargetFileExt Value=""/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<i18n>
<EnableI18N Value="True"/>
<OutDir Value="languages"/>
</i18n>
<VersionInfo>
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="1"/>
<CharSet Value="04B0"/>
<StringTable Comments="Explore your resources in executables and resource files" CompanyName="Alexey Lagunov" FileDescription="Resource Explorer" FileVersion="0.1.0.0" InternalName="LazResExplorer" LegalCopyright="Alexey Lagunov" LegalTrademarks="No Trademarks" OriginalFilename="lazresexplorer" ProductName="Lazarus Resource Explorer" ProductVersion="0.1.0.0"/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
<CommandLineParams Value="/home/alexs/1/5/imageres.dll"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="18">
<Unit0>
<Filename Value="ResExploer.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ResExploer"/>
<CursorPos X="1" Y="19"/>
<TopLine Value="1"/>
<UsageCount Value="22"/>
</Unit0>
<Unit1>
<Filename Value="remainunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="reMainForm"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="reMainUnit"/>
<CursorPos X="48" Y="84"/>
<TopLine Value="73"/>
<EditorIndex Value="0"/>
<UsageCount Value="22"/>
<Bookmarks Count="1">
<Item0 X="5" Y="168" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/resreader.pp"/>
<UnitName Value="resreader"/>
<CursorPos X="21" Y="29"/>
<TopLine Value="17"/>
<UsageCount Value="11"/>
</Unit2>
<Unit3>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/elfreader.pp"/>
<UnitName Value="elfreader"/>
<CursorPos X="1" Y="27"/>
<TopLine Value="18"/>
<UsageCount Value="11"/>
</Unit3>
<Unit4>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/resource.pp"/>
<UnitName Value="resource"/>
<CursorPos X="3" Y="129"/>
<TopLine Value="182"/>
<UsageCount Value="11"/>
</Unit4>
<Unit5>
<Filename Value="reaboutunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="reAboutForm"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="reAboutUnit"/>
<CursorPos X="27" Y="3"/>
<TopLine Value="1"/>
<UsageCount Value="22"/>
</Unit5>
<Unit6>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/resourcetree.pp"/>
<UnitName Value="resourcetree"/>
<CursorPos X="1" Y="10"/>
<TopLine Value="1"/>
<UsageCount Value="11"/>
</Unit6>
<Unit7>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/bitmapresource.pp"/>
<UnitName Value="bitmapresource"/>
<CursorPos X="3" Y="188"/>
<TopLine Value="186"/>
<UsageCount Value="11"/>
</Unit7>
<Unit8>
<Filename Value="reconstsunit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="reConstsUnit"/>
<CursorPos X="1" Y="23"/>
<TopLine Value="11"/>
<UsageCount Value="22"/>
</Unit8>
<Unit9>
<Filename Value="../../lazarus/doceditor/lazdeopts.pp"/>
<UnitName Value="LazDEOpts"/>
<CursorPos X="1" Y="56"/>
<TopLine Value="23"/>
<UsageCount Value="10"/>
</Unit9>
<Unit10>
<Filename Value="../../lazarus/doceditor/fpdeutil.pp"/>
<UnitName Value="FPDEUtil"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit10>
<Unit11>
<Filename Value="../../lazarus/doceditor/frmoptions.pp"/>
<ComponentName Value="OptionsForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="frmOptions"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="71"/>
<UsageCount Value="10"/>
</Unit11>
<Unit12>
<Filename Value="../../lazarus/doceditor/lazdemsg.pp"/>
<UnitName Value="LazDEMsg"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="148"/>
<UsageCount Value="10"/>
</Unit12>
<Unit13>
<Filename Value="/usr/local/share/lazarus/lcl/interfaces/gtk/gtkwidgetset.inc"/>
<CursorPos X="1" Y="1220"/>
<TopLine Value="1203"/>
<UsageCount Value="10"/>
</Unit13>
<Unit14>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/groupiconresource.pp"/>
<UnitName Value="groupiconresource"/>
<CursorPos X="15" Y="35"/>
<TopLine Value="18"/>
<UsageCount Value="11"/>
</Unit14>
<Unit15>
<Filename Value="../../../install/fpcsrc/packages/fcl-res/src/groupresource.pp"/>
<UnitName Value="groupresource"/>
<CursorPos X="3" Y="29"/>
<TopLine Value="32"/>
<UsageCount Value="11"/>
</Unit15>
<Unit16>
<Filename Value="/usr/local/share/lazarus/lcl/forms.pp"/>
<UnitName Value="Forms"/>
<CursorPos X="17" Y="675"/>
<TopLine Value="658"/>
<UsageCount Value="10"/>
</Unit16>
<Unit17>
<Filename Value="../../doc_manager/gui/dmg_aboutunit.pas"/>
<ComponentName Value="AboutForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="dmg_AboutUnit"/>
<CursorPos X="24" Y="9"/>
<TopLine Value="60"/>
<UsageCount Value="10"/>
</Unit17>
</Units>
<JumpHistory Count="20" HistoryIndex="19">
<Position1>
<Filename Value="remainunit.pas"/>
<Caret Line="80" Column="29" TopLine="67"/>
</Position1>
<Position2>
<Filename Value="remainunit.pas"/>
<Caret Line="81" Column="29" TopLine="67"/>
</Position2>
<Position3>
<Filename Value="remainunit.pas"/>
<Caret Line="82" Column="29" TopLine="67"/>
</Position3>
<Position4>
<Filename Value="remainunit.pas"/>
<Caret Line="83" Column="29" TopLine="67"/>
</Position4>
<Position5>
<Filename Value="remainunit.pas"/>
<Caret Line="84" Column="29" TopLine="67"/>
</Position5>
<Position6>
<Filename Value="remainunit.pas"/>
<Caret Line="85" Column="29" TopLine="67"/>
</Position6>
<Position7>
<Filename Value="remainunit.pas"/>
<Caret Line="208" Column="100" TopLine="179"/>
</Position7>
<Position8>
<Filename Value="remainunit.pas"/>
<Caret Line="91" Column="23" TopLine="72"/>
</Position8>
<Position9>
<Filename Value="remainunit.pas"/>
<Caret Line="134" Column="25" TopLine="112"/>
</Position9>
<Position10>
<Filename Value="remainunit.pas"/>
<Caret Line="134" Column="25" TopLine="112"/>
</Position10>
<Position11>
<Filename Value="remainunit.pas"/>
<Caret Line="109" Column="20" TopLine="107"/>
</Position11>
<Position12>
<Filename Value="remainunit.pas"/>
<Caret Line="109" Column="23" TopLine="107"/>
</Position12>
<Position13>
<Filename Value="remainunit.pas"/>
<Caret Line="57" Column="38" TopLine="35"/>
</Position13>
<Position14>
<Filename Value="remainunit.pas"/>
<Caret Line="172" Column="3" TopLine="170"/>
</Position14>
<Position15>
<Filename Value="remainunit.pas"/>
<Caret Line="67" Column="39" TopLine="40"/>
</Position15>
<Position16>
<Filename Value="remainunit.pas"/>
<Caret Line="57" Column="44" TopLine="51"/>
</Position16>
<Position17>
<Filename Value="remainunit.pas"/>
<Caret Line="105" Column="26" TopLine="105"/>
</Position17>
<Position18>
<Filename Value="remainunit.pas"/>
<Caret Line="178" Column="1" TopLine="173"/>
</Position18>
<Position19>
<Filename Value="remainunit.pas"/>
<Caret Line="9" Column="57" TopLine="1"/>
</Position19>
<Position20>
<Filename Value="remainunit.pas"/>
<Caret Line="67" Column="1" TopLine="50"/>
</Position20>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="8"/>
<Target>
<Filename Value="ResExploer"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)/"/>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<UseAnsiStrings Value="True"/>
</SyntaxOptions>
</Parsing>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,22 @@
program ResExploer;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, reMainUnit, reAboutUnit, reConstsUnit
{ you can add units after this };
{$R ResExploer.res}
begin
Application.Initialize;
Application.CreateForm(TreMainForm, reMainForm);
if Paramcount>0 then
reMainForm.OpenFile(ParamStr(1));
Application.Run;
end.

Binary file not shown.

View File

@ -0,0 +1,199 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: reconstsunit.sabout
msgctxt "reconstsunit.sabout"
msgid "About..."
msgstr ""
#: reconstsunit.sbuilddate
msgid "Build date : "
msgstr ""
#: reconstsunit.scarbonwidgetset
msgid "Carbon widget set"
msgstr ""
#: reconstsunit.sexit
msgctxt "reconstsunit.sexit"
msgid "Exit"
msgstr ""
#: reconstsunit.sfile
msgctxt "reconstsunit.sfile"
msgid "File"
msgstr ""
#: reconstsunit.sfpcversion
msgid "FPC version : "
msgstr ""
#: reconstsunit.sfpguiwidgetset
msgid "FpGUI widget set"
msgstr ""
#: reconstsunit.sgtk2widgetset
msgid "GTK 2 widget set"
msgstr ""
#: reconstsunit.sgtkwidgetset
msgid "GTK widget set"
msgstr ""
#: reconstsunit.shelp
msgctxt "reconstsunit.shelp"
msgid "Help"
msgstr ""
#: reconstsunit.simage
msgctxt "reconstsunit.simage"
msgid "Image"
msgstr ""
#: reconstsunit.slclversion
msgid "LCL Version: "
msgstr ""
#: reconstsunit.slicense
msgid "This program is free software under GNU GPL 2 license, see COPYING file"
msgstr ""
#: reconstsunit.sopen
msgctxt "reconstsunit.sopen"
msgid "Open..."
msgstr ""
#: reconstsunit.sotherguiwidgetset
msgid "Other gui"
msgstr ""
#: reconstsunit.sqtwidgetset
msgid "QT widget set"
msgstr ""
#: reconstsunit.sresourceexplorer
msgid "Resource explorer"
msgstr ""
#: reconstsunit.ssaveresource
msgctxt "reconstsunit.ssaveresource"
msgid "Save resource..."
msgstr ""
#: reconstsunit.sstrings
msgid "Strings"
msgstr ""
#: reconstsunit.stargetcpu
msgid "Target CPU : "
msgstr ""
#: reconstsunit.stargetos
msgid "Target OS : "
msgstr ""
#: reconstsunit.swin32_64widgetset
msgid "Win32/Win64 widget set"
msgstr ""
#: reconstsunit.swincewidgetset
msgid "WinCE widget set"
msgstr ""
#: TREABOUTFORM.CAPTION
msgid "reAboutForm"
msgstr ""
#: TREABOUTFORM.LABEL2.CAPTION
msgid "by Lagunov A.A. (alexs)"
msgstr ""
#: TREABOUTFORM.LBLAPPNAME.CAPTION
msgctxt "TREABOUTFORM.LBLAPPNAME.CAPTION"
msgid "App name"
msgstr ""
#: TREABOUTFORM.LBLBUILDDATE.CAPTION
msgid "Build date :"
msgstr ""
#: TREABOUTFORM.LBLFPCVERSION.CAPTION
msgid "FPC Version :"
msgstr ""
#: TREABOUTFORM.LBLLCLVERSION.CAPTION
msgid "LCL Version :"
msgstr ""
#: TREABOUTFORM.LBLLICENSE.CAPTION
msgctxt "TREABOUTFORM.LBLLICENSE.CAPTION"
msgid "App name"
msgstr ""
#: TREABOUTFORM.LBLTARGCPU.CAPTION
msgid "Target CPU :"
msgstr ""
#: TREABOUTFORM.LBLTARGETOS.CAPTION
msgid "Target OS :"
msgstr ""
#: TREABOUTFORM.LBLWIDGETNAME.CAPTION
msgid "Widget Name"
msgstr ""
#: TREMAINFORM.CAPTION
msgid "reMainForm"
msgstr ""
#: TREMAINFORM.FILEEXIT.CAPTION
msgctxt "TREMAINFORM.FILEEXIT.CAPTION"
msgid "Exit"
msgstr ""
#: TREMAINFORM.FILEOPEN.CAPTION
msgctxt "TREMAINFORM.FILEOPEN.CAPTION"
msgid "Open..."
msgstr ""
#: TREMAINFORM.FILESAVE.CAPTION
msgctxt "TREMAINFORM.FILESAVE.CAPTION"
msgid "Save resource..."
msgstr ""
#: TREMAINFORM.HLPABOUT.CAPTION
msgctxt "TREMAINFORM.HLPABOUT.CAPTION"
msgid "About..."
msgstr ""
#: TREMAINFORM.MENUITEM1.CAPTION
msgctxt "TREMAINFORM.MENUITEM1.CAPTION"
msgid "File"
msgstr ""
#: TREMAINFORM.MENUITEM2.CAPTION
msgctxt "TREMAINFORM.MENUITEM2.CAPTION"
msgid "Help"
msgstr ""
#: TREMAINFORM.MENUITEM5.CAPTION
msgid "-"
msgstr ""
#: TREMAINFORM.TABIMAGE.CAPTION
msgctxt "TREMAINFORM.TABIMAGE.CAPTION"
msgid "Image"
msgstr ""
#: TREMAINFORM.TABSTRING.CAPTION
msgid "String"
msgstr ""
#: TREMAINFORM.TOOLBAR1.CAPTION
msgid "ToolBar1"
msgstr ""
#: TREMAINFORM.TOOLBUTTON3.CAPTION
msgid "ToolButton3"
msgstr ""

View File

@ -0,0 +1,199 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: reconstsunit.sabout
msgctxt "reconstsunit.sabout"
msgid "About..."
msgstr "О программе..."
#: reconstsunit.sbuilddate
msgid "Build date : "
msgstr "Дата сборки : "
#: reconstsunit.scarbonwidgetset
msgid "Carbon widget set"
msgstr ""
#: reconstsunit.sexit
msgctxt "reconstsunit.sexit"
msgid "Exit"
msgstr "Закрыть"
#: reconstsunit.sfile
msgctxt "reconstsunit.sfile"
msgid "File"
msgstr "Файл"
#: reconstsunit.sfpcversion
msgid "FPC version : "
msgstr "Версия FPC : "
#: reconstsunit.sfpguiwidgetset
msgid "FpGUI widget set"
msgstr ""
#: reconstsunit.sgtk2widgetset
msgid "GTK 2 widget set"
msgstr ""
#: reconstsunit.sgtkwidgetset
msgid "GTK widget set"
msgstr ""
#: reconstsunit.shelp
msgctxt "reconstsunit.shelp"
msgid "Help"
msgstr "Справка"
#: reconstsunit.simage
msgctxt "reconstsunit.simage"
msgid "Image"
msgstr "Изображение"
#: reconstsunit.slclversion
msgid "LCL Version: "
msgstr "Версия LCL : "
#: reconstsunit.slicense
msgid "This program is free software under GNU GPL 2 license, see COPYING file"
msgstr "Эта свободная программа и распространяется по лицензией GPL 2. (см. файл COPYING)"
#: reconstsunit.sopen
msgctxt "reconstsunit.sopen"
msgid "Open..."
msgstr "Открыть..."
#: reconstsunit.sotherguiwidgetset
msgid "Other gui"
msgstr ""
#: reconstsunit.sqtwidgetset
msgid "QT widget set"
msgstr ""
#: reconstsunit.sresourceexplorer
msgid "Resource explorer"
msgstr "Обзор ресурсов"
#: reconstsunit.ssaveresource
msgctxt "reconstsunit.ssaveresource"
msgid "Save resource..."
msgstr "Сохранить ресурс..."
#: reconstsunit.sstrings
msgid "Strings"
msgstr "Строки"
#: reconstsunit.stargetcpu
msgid "Target CPU : "
msgstr "Целевой процессор : "
#: reconstsunit.stargetos
msgid "Target OS : "
msgstr "Целевая ОС : "
#: reconstsunit.swin32_64widgetset
msgid "Win32/Win64 widget set"
msgstr ""
#: reconstsunit.swincewidgetset
msgid "WinCE widget set"
msgstr ""
#: TREABOUTFORM.CAPTION
msgid "reAboutForm"
msgstr ""
#: TREABOUTFORM.LABEL2.CAPTION
msgid "by Lagunov A.A. (alexs)"
msgstr ""
#: TREABOUTFORM.LBLAPPNAME.CAPTION
msgctxt "TREABOUTFORM.LBLAPPNAME.CAPTION"
msgid "App name"
msgstr ""
#: TREABOUTFORM.LBLBUILDDATE.CAPTION
msgid "Build date :"
msgstr ""
#: TREABOUTFORM.LBLFPCVERSION.CAPTION
msgid "FPC Version :"
msgstr ""
#: TREABOUTFORM.LBLLCLVERSION.CAPTION
msgid "LCL Version :"
msgstr ""
#: TREABOUTFORM.LBLLICENSE.CAPTION
msgctxt "TREABOUTFORM.LBLLICENSE.CAPTION"
msgid "App name"
msgstr ""
#: TREABOUTFORM.LBLTARGCPU.CAPTION
msgid "Target CPU :"
msgstr ""
#: TREABOUTFORM.LBLTARGETOS.CAPTION
msgid "Target OS :"
msgstr ""
#: TREABOUTFORM.LBLWIDGETNAME.CAPTION
msgid "Widget Name"
msgstr ""
#: TREMAINFORM.CAPTION
msgid "reMainForm"
msgstr ""
#: TREMAINFORM.FILEEXIT.CAPTION
msgctxt "TREMAINFORM.FILEEXIT.CAPTION"
msgid "Exit"
msgstr "Закрыть"
#: TREMAINFORM.FILEOPEN.CAPTION
msgctxt "TREMAINFORM.FILEOPEN.CAPTION"
msgid "Open..."
msgstr "Открыть..."
#: TREMAINFORM.FILESAVE.CAPTION
msgctxt "TREMAINFORM.FILESAVE.CAPTION"
msgid "Save resource..."
msgstr "Сохранить ресурс..."
#: TREMAINFORM.HLPABOUT.CAPTION
msgctxt "TREMAINFORM.HLPABOUT.CAPTION"
msgid "About..."
msgstr "О программе..."
#: TREMAINFORM.MENUITEM1.CAPTION
msgctxt "TREMAINFORM.MENUITEM1.CAPTION"
msgid "File"
msgstr "Файл"
#: TREMAINFORM.MENUITEM2.CAPTION
msgctxt "TREMAINFORM.MENUITEM2.CAPTION"
msgid "Help"
msgstr "Справка"
#: TREMAINFORM.MENUITEM5.CAPTION
msgid "-"
msgstr ""
#: TREMAINFORM.TABIMAGE.CAPTION
msgctxt "TREMAINFORM.TABIMAGE.CAPTION"
msgid "Image"
msgstr "Изображение"
#: TREMAINFORM.TABSTRING.CAPTION
msgid "String"
msgstr ""
#: TREMAINFORM.TOOLBAR1.CAPTION
msgid "ToolBar1"
msgstr ""
#: TREMAINFORM.TOOLBUTTON3.CAPTION
msgid "ToolButton3"
msgstr ""

View File

@ -0,0 +1,132 @@
object reAboutForm: TreAboutForm
Left = 428
Height = 471
Top = 293
Width = 527
ActiveControl = ListBox1
Caption = 'reAboutForm'
ClientHeight = 471
ClientWidth = 527
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '0.9.29'
object ButtonPanel1: TButtonPanel
Left = 6
Height = 40
Top = 425
Width = 515
TabOrder = 0
ShowButtons = [pbClose, pbHelp]
end
object Label2: TLabel
AnchorSideTop.Control = Owner
Left = 0
Height = 18
Top = 24
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'by Lagunov A.A. (alexs)'
ParentColor = False
end
object lblLicense: TLabel
AnchorSideTop.Control = Label2
Left = 0
Height = 18
Top = 42
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'App name'
ParentColor = False
WordWrap = True
end
object lblBuildDate: TLabel
AnchorSideTop.Control = lblLicense
Left = 0
Height = 18
Top = 66
Width = 527
Align = alTop
Alignment = taCenter
BorderSpacing.Top = 6
Caption = 'Build date :'
ParentColor = False
end
object lblLCLVersion: TLabel
AnchorSideTop.Control = lblBuildDate
Left = 0
Height = 18
Top = 84
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'LCL Version :'
ParentColor = False
end
object lblFPCVersion: TLabel
AnchorSideTop.Control = lblLCLVersion
Left = 0
Height = 18
Top = 102
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'FPC Version :'
ParentColor = False
end
object lblTargCPU: TLabel
AnchorSideTop.Control = lblFPCVersion
Left = 0
Height = 18
Top = 120
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'Target CPU :'
ParentColor = False
end
object lblTargetOS: TLabel
Left = 0
Height = 18
Top = 138
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'Target OS :'
ParentColor = False
end
object lblWidgetName: TLabel
AnchorSideTop.Control = lblTargetOS
Left = 0
Height = 18
Top = 156
Width = 527
Align = alTop
Alignment = taCenter
Caption = 'Widget Name'
ParentColor = False
end
object ListBox1: TListBox
Left = 0
Height = 245
Top = 174
Width = 527
Align = alClient
ItemHeight = 0
TabOrder = 1
TopIndex = -1
end
object lblAppName: TLabel
AnchorSideTop.Control = Label2
Left = 0
Height = 18
Top = 6
Width = 527
Align = alTop
Alignment = taCenter
BorderSpacing.Top = 6
Caption = 'App name'
ParentColor = False
end
end

View File

@ -0,0 +1,105 @@
unit reAboutUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ButtonPanel, StdCtrls, versionresource;
type
{ TreAboutForm }
TreAboutForm = class(TForm)
ButtonPanel1: TButtonPanel;
lblLicense: TLabel;
Label2: TLabel;
lblBuildDate: TLabel;
lblFPCVersion: TLabel;
lblLCLVersion: TLabel;
lblTargCPU: TLabel;
lblTargetOS: TLabel;
lblWidgetName: TLabel;
ListBox1: TListBox;
lblAppName: TLabel;
procedure FormCreate(Sender: TObject);
private
procedure ParceVersionInfo(V:TVersionResource);
public
{ public declarations }
end;
var
reAboutForm: TreAboutForm;
const
appBuildDate = {$I %DATE%};
TargetOS = {$I %FPCTARGETOS%};
fpcVersion = {$I %FPCVERSION%};
TargetCPU = {$I %FPCTARGETCPU%};
implementation
uses reConstsUnit, resource, resreader, LCLVersion,
{$IFDEF WINDOWS}
winpeimagereader
{$ELSE}
elfreader
{$ENDIF}
;
{$R *.lfm}
{ TreAboutForm }
procedure TreAboutForm.FormCreate(Sender: TObject);
var
Res:TResources;
i:integer;
Reader:TAbstractResourceReader;
V:TVersionResource;
begin
Caption:=sAbout;
lblTargCPU.Caption:=sLCLVersion + lcl_version;
lblBuildDate.Caption:=sBuildDate + appBuildDate;
lblLCLVersion.Caption:=sLCLVersion + LCLVersion;
lblFPCVersion.Caption:=sFpcVersion + fpcVersion;
lblTargCPU.Caption:=sTargetCPU + TargetCPU;
lblTargetOS.Caption:=sTargetOS + TargetOS;
lblAppName.Caption:=sResourceExplorer;
lblWidgetName.Caption:=LCLVersionStr;
lblLicense.Caption:=sLicense;
ListBox1.Items.Clear;
{$IFDEF WINDOWS}
Reader:=TWinPEImageResourceReader.Create;
{$ELSE}
Reader:=TElfResourceReader.Create;
{$ENDIF}
Res:=TResources.Create;
Res.LoadFromFile(ParamStr(0), Reader);
for i:=0 to Res.Count-1 do
begin
if Res[i] is TVersionResource then
V:=Res[i] as TVersionResource;
end;
if Assigned(V) then
ParceVersionInfo(V);
Res.Free;
Reader.Free;
end;
procedure TreAboutForm.ParceVersionInfo(V: TVersionResource);
var
i,j:integer;
begin
for i:=0 to V.StringFileInfo.Count-1 do
begin
for j:=0 to V.StringFileInfo[i].Count-1 do
ListBox1.Items.Add(SysToUTF8(V.StringFileInfo[i].Keys[j])+' = ' + SysToUTF8(V.StringFileInfo[i].ValuesByIndex[j]));
end;
end;
end.

View File

@ -0,0 +1,68 @@
unit reConstsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
resourcestring
sResourceExplorer = 'Resource explorer';
sSaveResource = 'Save resource...';
sAbout = 'About...';
sExit = 'Exit';
sOpen = 'Open...';
sFile = 'File';
sHelp = 'Help';
sStrings = 'Strings';
sImage = 'Image';
sLicense = 'This program is free software under GNU GPL 2 license, see COPYING file';
sLCLVersion = 'LCL Version: ';
sBuildDate = 'Build date : ';
sFpcVersion = 'FPC version : ';
sTargetCPU = 'Target CPU : ';
sTargetOS = 'Target OS : ';
sGTKWidgetSet = 'GTK widget set';
sGTK2WidgetSet = 'GTK 2 widget set';
sWin32_64WidgetSet = 'Win32/Win64 widget set';
sWinCEWidgetSet = 'WinCE widget set';
sCarbonWidgetSet = 'Carbon widget set';
sQTWidgetSet = 'QT widget set';
sFpGUIWidgetSet = 'FpGUI widget set';
sOtherGUIWidgetSet = 'Other gui';
function LCLVersionStr: string;
implementation
uses gettext, translations, LCLVersion, InterfaceBase;
function LCLVersionStr: string;
begin
case WidgetSet.LCLPlatform of
lpGtk:Result:=sGTKWidgetSet;
lpGtk2:Result:=sGTK2WidgetSet;
lpWin32:Result:=sWin32_64WidgetSet;
lpWinCE:Result:=sWinCEWidgetSet;
lpCarbon:Result:=sCarbonWidgetSet;
lpQT:Result:=sQTWidgetSet;
lpfpGUI:Result:=sFpGUIWidgetSet;
else
Result:=sOtherGUIWidgetSet;
end;
end;
procedure TranslateResStrings;
var
Lang, FallbackLang: String;
begin
GetLanguageIDs(Lang,FallbackLang); // in unit gettext
TranslateUnitResourceStrings('reConstsUnit','languages'+DirectorySeparator+'ResExploer.%s.po', Lang,FallbackLang);
end;
initialization
TranslateResStrings;
end.

View File

@ -0,0 +1,513 @@
object reMainForm: TreMainForm
Left = 341
Height = 605
Top = 242
Width = 768
ActiveControl = StringGrid1
Caption = 'reMainForm'
ClientHeight = 585
ClientWidth = 768
Menu = MainMenu1
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '0.9.29'
object TreeView1: TTreeView
Left = 0
Height = 506
Top = 56
Width = 288
Align = alLeft
DefaultItemHeight = 18
Images = ImageList1
ReadOnly = True
TabOrder = 0
OnClick = TreeView1Click
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
end
object PageControl1: TPageControl
Left = 293
Height = 506
Top = 56
Width = 475
ActivePage = tabString
Align = alClient
TabIndex = 0
TabOrder = 1
object tabString: TTabSheet
Caption = 'String'
ClientHeight = 480
ClientWidth = 467
object StringGrid1: TStringGrid
Left = 0
Height = 480
Top = 0
Width = 467
Align = alClient
AutoFillColumns = True
ColCount = 2
FixedCols = 0
FixedRows = 0
TabOrder = 0
ColWidths = (
231
232
)
end
end
object tabImage: TTabSheet
Caption = 'Image'
ClientHeight = 477
ClientWidth = 467
object Image1: TImage
Left = 0
Height = 477
Top = 0
Width = 467
Align = alClient
Center = True
end
end
end
object Splitter1: TSplitter
Left = 288
Height = 506
Top = 56
Width = 5
OnChangeBounds = Splitter1ChangeBounds
end
object HeaderControl1: THeaderControl
Left = 0
Height = 30
Top = 26
Width = 768
DragReorder = False
Sections = <
item
Alignment = taLeftJustify
Text = 'Resources'
Width = 150
Visible = True
end
item
Alignment = taLeftJustify
Width = 250
Visible = True
end>
OnSectionResize = HeaderControl1SectionResize
Align = alTop
end
object StatusBar1: TStatusBar
Left = 0
Height = 23
Top = 562
Width = 768
Panels = <>
end
object ToolBar1: TToolBar
Left = 0
Height = 26
Top = 0
Width = 768
AutoSize = True
Caption = 'ToolBar1'
EdgeBorders = [ebTop, ebBottom]
Images = ImageList1
List = True
ShowCaptions = True
TabOrder = 5
object ToolButton1: TToolButton
Left = 1
Top = 2
Action = fileOpen
AutoSize = True
end
object ToolButton2: TToolButton
Left = 67
Top = 2
Action = fileSave
AutoSize = True
end
object ToolButton3: TToolButton
Left = 176
Top = 2
Width = 8
AutoSize = True
Caption = 'ToolButton3'
Style = tbsSeparator
end
object ToolButton4: TToolButton
Left = 184
Top = 2
Action = hlpAbout
AutoSize = True
end
end
object ActionList1: TActionList
Images = ImageList1
left = 338
top = 166
object fileOpen: TAction
Category = 'File'
Caption = 'Open...'
ImageIndex = 0
OnExecute = fileOpenExecute
end
object fileExit: TAction
Category = 'File'
Caption = 'Exit'
ImageIndex = 1
OnExecute = fileExitExecute
end
object hlpAbout: TAction
Category = 'Help'
Caption = 'About...'
ImageIndex = 2
OnExecute = hlpAboutExecute
end
object fileSave: TAction
Category = 'File'
Caption = 'Save resource...'
ImageIndex = 3
end
end
object ImageList1: TImageList
Height = 18
Width = 18
left = 384
top = 166
Bitmap = {
4C69040000001200000012000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000EAC39DFFE6BF96FFE4BB92FFE4BB
92FFD1A06CF5D09E6DF6CC965FDAC479427EB2673C0900000000000000000000
0000000000000000000000000000000000000000000000000000E5BE96FFFFFF
FEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2E7FFEABB88FFCF8555B3B469
3D0C000000000000000000000000000000000000000000000000000000000000
0000E4BB93FFFEF5EDFFFCDEC5FFFBE0C7FFF9DCC2FFF5D3B4FFFEF9F3FFFAE2
C4FFECC193FFC37D489300000000000000000000000000000000000000000000
00000000000000000000E4BB92FFFEF6F0FFFCE2CDFFFCE3CDFFFADFC8FFF7D9
BCFFF5E9DDFFFAF3EBFFFBF8F3FFCA8353FE0000000000000000000000000000
000000000000000000000000000000000000E4BB92FFFEF7F1FFFCE5D2FFFCE4
D1FFFBE2CCFFF9DDC4FFF6D7BBFFF3D1AFFFFAEFE4FFCC8758FE000000000000
000034B4D9D05EC2E1FA60C3E2FA60C3E2FA60C3E2FA5FC3E2FAE4BB91FFFFF7
F2FFFEE7D5FFFEE7D5FFFDE5D1FFFAE0CAFFF9DEC4FFF7D9BCFFFDF2E7FFCC87
57FE000000000000000036B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFEFFFFFEFF
FFFFE4BA91FFFFF7F0FFFFE7D5FFFDE7D6FFFDE6D4FFFCE4D0FFFBE3CBFFFADC
C2FFFEF3E8FFCC8656FE000000000000000035AFDAF0F7FCFEFF8EE4F8FF91DE
F5FF9FE0F5FFACE1F6FFCA8452FFFFF7F1FFFFE9D9FFFFEADBFFFFE9D9FFFFE7
D7FFFFE5D2FFFFE2CBFFFFF7F1FFCB8555FE000000000000000036AADAF2F1FA
FDFF94DEF5FF93DCF4FF64BCE9FF3594DAFF3594DAFF3594DAFF3594DAFF3594
DAFF3594DAFF3594DAFF3594DAFF3594DAFFFBF6EFFFCC8355FE000000000000
000035ABDAFAE8F6FBFF70BCE7FF55AAE2FF4DA5E0FF91C9EBFFFAF3EFFFFDFE
FDFFFFFDFCFFFFFDFCFFFEFDFCFFFEFCFBFFFEFEFDFF3594DAFFEFF2E8FFCE81
56FF000000000000000037A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FCFFFFF3FC
FEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3F8FF3594
DAFFFDF4EEFFCA8054F9000000000000000036A1DAF9F6FCFEFF94E5F8FF93E5
F8FF93E5F8FF91E5F8FF93DBE9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1
C6FFC9D8D6FF3594DAFFC57444E8CA7F53F10000000000000000369ADAF8F2FA
FDFF94E6F8FF92E5F8FF90E5F8FF8BE3F8FF86E2F7FF7FE1F7FF77DEF6FF6CDC
F6FF5ED9F4FF4FD5F3FFCCF2FBFF3594DAFF0000000000000000000000000000
00003594DAF7EFFAFEFF93E5F8FF8FE4F8FF89E3F8FF82E1F7FF7ADFF7FF71DE
F6FF67DBF5FF5BD8F4FF4DD4F3FF40D1F2FFCAF2FBFF3594DAFF000000000000
00000000000000000000338ED9FBDCF0FAFF98E1F6FF95E0F6FF92DFF6FF8EDE
F5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EAF8FF3594
DAFF000000000000000000000000000000002C86D8D12D88D8F72D87D8F72D88
D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87
D8F72D88D8F72C86D8D100000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006D9CD4896A9AD2FB6697CFEE0000
000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00709ED6DB6D9CD4FF85B1DAFF5A91
B9FF6093CBEA0000000000000000FFFFFF00FFFFFF00808080FF7E7E7EFF7C7C
7CFF7A7A7AFF777777FF757575FF727272FF719ED4FF6F9ED6FF87B2DCFFABD3
E8FFA9D0E6FF5890B8FF598EC6EA0000000000000000FFFFFF00FFFFFF007D7D
7DFF999999FF999999FF9A9A9AFF9A9A9AFF9B9B9BFF9B9B9BFF6F9DD3FFAAD1
E7FFABD1E7FF98C7E1FF91C2DEFF568FB7FF5289C1EA0000000000000000FFFF
FF00FFFFFF007A7A7AFF999999FF529159FF999A99FF9B9B9BFF9C9C9CFF9C9C
9CFF6C9AD0FFA7CEE5FF8FC1DFFF89BDDCFF8BBDDCFF538DB6FF4B84BCEA0000
000000000000FFFFFF00FFFFFF00777777FF9A9A9AFF3D8A45FF498A4FFF9C9C
9CFF9D9D9DFF9D9D9DFF6696CCFFA2CBE3FF89BDDCFF83B9DAFF84B9DAFF518B
B5FF437EB6EA000000000000000044944DFF42914BFF3F8D48FF3D8945FF5DA4
65FF5AA061FF45834BFF9E9E9EFF9E9E9EFF6092C9FF9EC7E2FF83B8DAFF7DB4
D7FF7EB3D7FF4F89B4FF3B79B1EA000000000000000041904AFF94D29FFF91D0
9AFF8DCD96FF89CB92FF84C88DFF519858FF417C46FF9F9F9FFF5A8EC4FF98C3
E0FF7CB3D7FF74AFD6FF5EC4EDFF4B88B3FF3473ABEA00000000000000003E8B
46FF8FCE99FF7DC687FF78C381FF73C07CFF74C07CFF79C281FF49904FFF547F
57FF5489BFFF94BFDDFF75ADD4FF63B8E1FF4BD4FFFF428BB8FF2C6EA6EA0000
0000000000003B8742FF89CB92FF84C88DFF80C688FF7BC383FF77C17FFF478F
4DFF3B743FFFA1A1A1FF4C84BAFF8DBBDBFF6EA8D1FF66A6D1FF5FB4DFFF4785
B1FF2569A1EA000000000000000037823EFF347E3BFF317937FF2E7534FF4991
50FF468F4CFF39733DFFA1A1A1FFA2A2A2FF457EB4FF88B7D9FF67A3CFFF619E
CCFF639FCCFF4583B1FF1F649CEA0000000000000000FFFFFF00FFFFFF006060
60FFA0A0A0FF3D7641FF367139FFA2A2A2FFA2A2A2FFA3A3A3FF3D79B0FF82B3
D7FF629FCCFF5A9AC9FF5E9BCAFF4381AFFF196098EA0000000000000000FFFF
FF00FFFFFF005C5C5CFFA1A1A1FF3C7340FFA0A1A1FFA3A3A3FFA3A3A3FFA4A4
A4FF3674AAFF7DAFD4FF5B9AC9FF5495C7FF5896C8FF4180AEFF135C94EA0000
000000000000FFFFFF00FFFFFF00585858FFA2A2A2FFA2A2A2FFA3A3A3FFA4A4
A4FFA4A4A4FFA5A5A5FF2F6FA5FF78ABD2FF78ABD3FF73A7D1FF69A0CDFF407F
AEFF0F5991EA0000000000000000999999FF717171FF545454FF515151FF4F4F
4FFF4C4C4CFF4A4A4AFF474747FF454545FF25679DFF3274A8FF3D7CAFFF4784
B5FF4E8ABAFF3E7EADFF0C578FEA0000000000000000FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001D639B161960
9839145D9562105A92880D5890A4135C92FC0C578FED00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
FF00FFFFFF00D8985223D4964D7DD2924CDBCD8C45F3CB8B41F3C98B40DBC78B
407DC5873D23FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFF
FF00FFFFFF00FFFFFF00D6974F53D19149E6D0A06AFFE0BFA0FFE3C5AEFFE3C5
AEFFDFBC9FFFC89762FFBD7D35E6BC7E3553FFFFFF00FFFFFF00FFFFFF000000
000000000000FFFFFF00FFFFFF00D4964D53CF8D47F4D9B28CFFE6CDB8FFE0BA
9DFFD7AB85FFD6A982FFD9B391FFE1C2ABFFD4AE86FFB16B35F4B16F3553FFFF
FF00FFFFFF000000000000000000FFFFFF00D2934C22CE8E47E5D9B28CFFE6CA
B3FFD6A97DFFD1A579FFE2C4A8FFE1C3A8FFD0A276FFD1A477FFDDBDA2FFD0AC
85FFAB6635E5A9653522FFFFFF000000000000000000FFFFFF00CE91477ECD9C
68FFE7CBB4FFD4A57AFFD0A077FFCF9E74FFFBF8F5FFFBF8F5FFCB9E71FFCB9D
71FFCDA177FFDFC0A5FFB98A5BFFA45C347EFFFFFF000000000000000000FFFF
FF00CB8E41DBE0BC9FFFDBB393FFCFA075FFCD9E72FFCB9C71FFDDBFA3FFDDBF
A2FFC5996BFFC5996BFFC4986BFFD1AB85FFD8BA97FF9E5635DBFFFFFF000000
000000000000FFFFFF00C5853BF6E4C9B0FFD0A37AFFCC9D71FFC79A6CFFC598
6BFFFFFFFFFFFFFFFEFFC39669FFC19468FFC29468FFC3986DFFDFC5ABFF9553
34F6FFFFFF000000000000000000FFFFFF00BF7E35F6E3C7AFFFD0A276FFC599
6BFFC4976AFFC49669FFEEE0D4FFFBF7F4FFBF9066FFBE8F65FFBE8F64FFBE92
69FFDFC6AAFF925034F6FFFFFF000000000000000000FFFFFF00BC7E35DBDBBC
9CFFD5AD89FFC7986CFFC39569FFC19367FFEDDFD3FFFAF7F4FFBB8B63FFB98A
63FFB88A62FFC59D78FFD2B893FF905135DBFFFFFF000000000000000000FFFF
FF00B878357EBF915EFFE0C2A8FFC5966CFFC29169FFE1CBB8FFFEFDFCFFFFFF
FEFFEADCD0FFB4855EFFB3855EFFD4B599FFAE7B56FF8F51357EFFFFFF000000
000000000000FFFFFF00AF703522AB6935E5CFAA81FFDABCA2FFBE9166FFBA8C
62FFB7895FFFB3845EFFB1835DFFB0835CFFCDAA8DFFC6A579FF895034E58950
3522FFFFFF000000000000000000FFFFFF00FFFFFF00A76234539F5533F4CBA7
7DFFD8BB9FFFC39C77FFB68A62FFB48660FFBE9672FFD1B397FFC5A377FF844F
35F489503553FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFF
FF009F563453995534E6B28057FFD5B793FFDBC3A6FFDAC3A6FFD2B490FFAB7A
52FF864F34E688503553FFFFFF00FFFFFF00FFFFFF000000000000000000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00975435239453347D925234DB8A5034F3884F
34F3895035DB8950357D84503623FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FEFEFE00636CA5FF233EC2FFFEFEFE00F7F7FB00FEFEFE00FFFFFF000000
000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00CFD2D1FF868B89FF868B
89FF868B89FF868B89FF868B89FF1F2777FF0A37CAFF0B45F3FFFEFEFE00FAFA
FC00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF00868B89FF868B
89FF8D908FFFCFD2D1FFFFFFFF00FFFFFF006B6995FF232971FF0C2CBAFF0641
F2FF4661CEFFFEFEFE00FFFFFF000000000000000000FFFFFF00FFFFFF00868B
89FFB86F6CFFB97370FFFFFFFF00FEFEFD00FFFFFF00FFFFFF00232971FF2329
71FF0920A8FF0B45F3FF0B45F3FF5666C1FFFFFFFF000000000000000000FFFF
FF00A9524AFFBA5E54FFC47269FFC17067FFB06358FFFFFFFF00FFFFFF009091
ADFF232971FF232971FF031E8EFF0B45F3FF0B45F3FF0B45F3FFFFFFFF000000
0000000000009C5048FFB14E45FFC17D71FFE7BAABFFD09689FFC87A6EFFB455
4BFFFFFFFF00FFFFFF00232971FF232971FF232971FF0B45F3FF0B45F3FF7C8E
CFFFFFFFFF000000000000000000D4976EFFD49E7BFFD09871FFD6A482FFCD8E
68FFCD9069FFD09A75FFD19973FFC88B62FFEEDDD0FF232971FF232971FF0B45
F3FF3E5CCCFF868B89FFFFFFFF000000000000000000CC8D65FFF3CDB0FFFFFF
FFFFE3C7B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEABFA1FFC98960FFFFFF
FF00232971FFFFFFFF00FFFFFF00868B89FFFFFFFF000000000000000000C786
5BFFEFC09EFFFFFFFFFFCC936EFFFFFFFFFFFFFFFFFFFFFBF7FFFFF8F1FFE4AF
8CFFC78A61FFF3F9FA00FFFFFF00FFFFFF00FFFFFF00868B89FFFFFFFF000000
000000000000C8885DFFEFBFA1FFFDFCFAFFFEFCFBFFFEFDFDFFFEFDFCFFFDFB
FAFFFDFCFBFFDDA885FFC17F53FF72D4FDFFE2F5FCFFFFFFFF00CFD2D1FF868B
89FFFFFFFF000000000000000000CA8D65FFEAB899FFDDA57EFFDDA680FFDBA3
7CFFD9A07AFFD9A079FFD89F78FFD89E78FFBF845DFF72D4FDFF72D4FDFFFFFF
FF00868B89FF868B89FFFFFFFF000000000000000000C98B61FFE6B592FFE2A7
81FFE1A781FFDEA37DFFDCA17BFFDB9F79FFD99E77FFD49A73FFBB7E57FF72D4
FDFF29638CFFCFD2D1FF868B89FFCFD2D1FFFFFFFF000000000000000000C481
54FFEAB697FFF3F3EAFFEDF1E6FFEFF1E6FFEFF0E6FFEDF1E5FFF3F5EDFFD59C
79FFB07044FF29638CFF29638CFF868B89FF868B89FFFFFFFF00FFFFFF000000
000000000000C37F51FFEFB69AFFEAF3E8FF51BF84FF6FC998FF71C999FF54BF
84FFE4F4E9FFDD9C7BFFAA693AFF29638CFF29638CFF868B89FFCFD2D1FFFFFF
FF00FFFFFF000000000000000000C68355FFEFCEBAFFDDFFFFFF87EEC7FFA2F4
D7FFA2F6D7FF8CEEC7FFE0FFFFFFDDA285FFAB6A3EFF29638CFFCFD2D1FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF000000000000000000CA8B62FFC38458FFD38B
68FFE18F70FFDC8D6CFFDA8B6DFFD78A6EFFCD8B6CFFAB6D44FFA65F2EFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
object MainMenu1: TMainMenu
Images = ImageList1
left = 304
top = 166
object MenuItem1: TMenuItem
Caption = 'File'
object MenuItem4: TMenuItem
Action = fileOpen
Bitmap.Data = {
46050000424D4605000000000000360000002800000012000000120000000100
2000000000001005000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000002C86D8D12D88D8F72D87D8F72D88D8F72D88D8F72D88D8F72D88
D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88D8F72C86D8D10000
0000000000000000000000000000338ED9FBDCF0FAFF98E1F6FF95E0F6FF92DF
F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA
F8FF3594DAFF000000000000000000000000000000003594DAF7EFFAFEFF93E5
F8FF8FE4F8FF89E3F8FF82E1F7FF7ADFF7FF71DEF6FF67DBF5FF5BD8F4FF4DD4
F3FF40D1F2FFCAF2FBFF3594DAFF00000000000000000000000000000000369A
DAF8F2FAFDFF94E6F8FF92E5F8FF90E5F8FF8BE3F8FF86E2F7FF7FE1F7FF77DE
F6FF6CDCF6FF5ED9F4FF4FD5F3FFCCF2FBFF3594DAFF00000000000000000000
00000000000036A1DAF9F6FCFEFF94E5F8FF93E5F8FF93E5F8FF91E5F8FF93DB
E9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1C6FFC9D8D6FF3594DAFFC574
44E8CA7F53F1000000000000000037A6DAFAFEFFFFFFF8FDFFFFF6FDFFFFF5FC
FFFFF3FCFEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3
F8FF3594DAFFFDF4EEFFCA8054F9000000000000000035ABDAFAE8F6FBFF70BC
E7FF55AAE2FF4DA5E0FF91C9EBFFFAF3EFFFFDFEFDFFFFFDFCFFFFFDFCFFFEFD
FCFFFEFCFBFFFEFEFDFF3594DAFFEFF2E8FFCE8156FF000000000000000036AA
DAF2F1FAFDFF94DEF5FF93DCF4FF64BCE9FF3594DAFF3594DAFF3594DAFF3594
DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFFFBF6EFFFCC8355FE0000
00000000000035AFDAF0F7FCFEFF8EE4F8FF91DEF5FF9FE0F5FFACE1F6FFCA84
52FFFFF7F1FFFFE9D9FFFFEADBFFFFE9D9FFFFE7D7FFFFE5D2FFFFE2CBFFFFF7
F1FFCB8555FE000000000000000036B3DAF8FDFEFEFFFEFFFFFFFEFEFFFFFDFE
FFFFFEFFFFFFE4BA91FFFFF7F0FFFFE7D5FFFDE7D6FFFDE6D4FFFCE4D0FFFBE3
CBFFFADCC2FFFEF3E8FFCC8656FE000000000000000034B4D9D05EC2E1FA60C3
E2FA60C3E2FA60C3E2FA5FC3E2FAE4BB91FFFFF7F2FFFEE7D5FFFEE7D5FFFDE5
D1FFFAE0CAFFF9DEC4FFF7D9BCFFFDF2E7FFCC8757FE00000000000000000000
00000000000000000000000000000000000000000000E4BB92FFFEF7F1FFFCE5
D2FFFCE4D1FFFBE2CCFFF9DDC4FFF6D7BBFFF3D1AFFFFAEFE4FFCC8758FE0000
000000000000000000000000000000000000000000000000000000000000E4BB
92FFFEF6F0FFFCE2CDFFFCE3CDFFFADFC8FFF7D9BCFFF5E9DDFFFAF3EBFFFBF8
F3FFCA8353FE0000000000000000000000000000000000000000000000000000
000000000000E4BB93FFFEF5EDFFFCDEC5FFFBE0C7FFF9DCC2FFF5D3B4FFFEF9
F3FFFAE2C4FFECC193FFC37D4893000000000000000000000000000000000000
0000000000000000000000000000E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2
E8FFFAEFE3FFFAF2E7FFEABB88FFCF8555B3B4693D0C00000000000000000000
00000000000000000000000000000000000000000000EAC39DFFE6BF96FFE4BB
92FFE4BB92FFD1A06CF5D09E6DF6CC965FDAC479427EB2673C09000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000
}
OnClick = fileOpenExecute
end
object MenuItem5: TMenuItem
Caption = '-'
end
object MenuItem6: TMenuItem
Action = fileExit
Bitmap.Data = {
46050000424D4605000000000000360000002800000012000000120000000100
2000000000001005000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF001D639B1619609839145D9562105A92880D58
90A4135C92FC0C578FED0000000000000000999999FF717171FF545454FF5151
51FF4F4F4FFF4C4C4CFF4A4A4AFF474747FF454545FF25679DFF3274A8FF3D7C
AFFF4784B5FF4E8ABAFF3E7EADFF0C578FEA0000000000000000FFFFFF00FFFF
FF00585858FFA2A2A2FFA2A2A2FFA3A3A3FFA4A4A4FFA4A4A4FFA5A5A5FF2F6F
A5FF78ABD2FF78ABD3FF73A7D1FF69A0CDFF407FAEFF0F5991EA000000000000
0000FFFFFF00FFFFFF005C5C5CFFA1A1A1FF3C7340FFA0A1A1FFA3A3A3FFA3A3
A3FFA4A4A4FF3674AAFF7DAFD4FF5B9AC9FF5495C7FF5896C8FF4180AEFF135C
94EA0000000000000000FFFFFF00FFFFFF00606060FFA0A0A0FF3D7641FF3671
39FFA2A2A2FFA2A2A2FFA3A3A3FF3D79B0FF82B3D7FF629FCCFF5A9AC9FF5E9B
CAFF4381AFFF196098EA000000000000000037823EFF347E3BFF317937FF2E75
34FF499150FF468F4CFF39733DFFA1A1A1FFA2A2A2FF457EB4FF88B7D9FF67A3
CFFF619ECCFF639FCCFF4583B1FF1F649CEA00000000000000003B8742FF89CB
92FF84C88DFF80C688FF7BC383FF77C17FFF478F4DFF3B743FFFA1A1A1FF4C84
BAFF8DBBDBFF6EA8D1FF66A6D1FF5FB4DFFF4785B1FF2569A1EA000000000000
00003E8B46FF8FCE99FF7DC687FF78C381FF73C07CFF74C07CFF79C281FF4990
4FFF547F57FF5489BFFF94BFDDFF75ADD4FF63B8E1FF4BD4FFFF428BB8FF2C6E
A6EA000000000000000041904AFF94D29FFF91D09AFF8DCD96FF89CB92FF84C8
8DFF519858FF417C46FF9F9F9FFF5A8EC4FF98C3E0FF7CB3D7FF74AFD6FF5EC4
EDFF4B88B3FF3473ABEA000000000000000044944DFF42914BFF3F8D48FF3D89
45FF5DA465FF5AA061FF45834BFF9E9E9EFF9E9E9EFF6092C9FF9EC7E2FF83B8
DAFF7DB4D7FF7EB3D7FF4F89B4FF3B79B1EA0000000000000000FFFFFF00FFFF
FF00777777FF9A9A9AFF3D8A45FF498A4FFF9C9C9CFF9D9D9DFF9D9D9DFF6696
CCFFA2CBE3FF89BDDCFF83B9DAFF84B9DAFF518BB5FF437EB6EA000000000000
0000FFFFFF00FFFFFF007A7A7AFF999999FF529159FF999A99FF9B9B9BFF9C9C
9CFF9C9C9CFF6C9AD0FFA7CEE5FF8FC1DFFF89BDDCFF8BBDDCFF538DB6FF4B84
BCEA0000000000000000FFFFFF00FFFFFF007D7D7DFF999999FF999999FF9A9A
9AFF9A9A9AFF9B9B9BFF9B9B9BFF6F9DD3FFAAD1E7FFABD1E7FF98C7E1FF91C2
DEFF568FB7FF5289C1EA0000000000000000FFFFFF00FFFFFF00808080FF7E7E
7EFF7C7C7CFF7A7A7AFF777777FF757575FF727272FF719ED4FF6F9ED6FF87B2
DCFFABD3E8FFA9D0E6FF5890B8FF598EC6EA0000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00709ED6DB6D9CD4FF85B1DAFF5A91B9FF6093CBEA000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006D9CD4896A9AD2FB6697
CFEE0000000000000000
}
OnClick = fileExitExecute
end
end
object MenuItem2: TMenuItem
Caption = 'Help'
object MenuItem3: TMenuItem
Action = hlpAbout
Bitmap.Data = {
46050000424D4605000000000000360000002800000012000000120000000100
2000000000001005000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00975435239453347D925234DB8A5034F3884F34F3895035DB8950357D8450
3623FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF
FF00FFFFFF009F563453995534E6B28057FFD5B793FFDBC3A6FFDAC3A6FFD2B4
90FFAB7A52FF864F34E688503553FFFFFF00FFFFFF00FFFFFF00000000000000
0000FFFFFF00FFFFFF00A76234539F5533F4CBA77DFFD8BB9FFFC39C77FFB68A
62FFB48660FFBE9672FFD1B397FFC5A377FF844F35F489503553FFFFFF00FFFF
FF000000000000000000FFFFFF00AF703522AB6935E5CFAA81FFDABCA2FFBE91
66FFBA8C62FFB7895FFFB3845EFFB1835DFFB0835CFFCDAA8DFFC6A579FF8950
34E589503522FFFFFF000000000000000000FFFFFF00B878357EBF915EFFE0C2
A8FFC5966CFFC29169FFE1CBB8FFFEFDFCFFFFFFFEFFEADCD0FFB4855EFFB385
5EFFD4B599FFAE7B56FF8F51357EFFFFFF000000000000000000FFFFFF00BC7E
35DBDBBC9CFFD5AD89FFC7986CFFC39569FFC19367FFEDDFD3FFFAF7F4FFBB8B
63FFB98A63FFB88A62FFC59D78FFD2B893FF905135DBFFFFFF00000000000000
0000FFFFFF00BF7E35F6E3C7AFFFD0A276FFC5996BFFC4976AFFC49669FFEEE0
D4FFFBF7F4FFBF9066FFBE8F65FFBE8F64FFBE9269FFDFC6AAFF925034F6FFFF
FF000000000000000000FFFFFF00C5853BF6E4C9B0FFD0A37AFFCC9D71FFC79A
6CFFC5986BFFFFFFFFFFFFFFFEFFC39669FFC19468FFC29468FFC3986DFFDFC5
ABFF955334F6FFFFFF000000000000000000FFFFFF00CB8E41DBE0BC9FFFDBB3
93FFCFA075FFCD9E72FFCB9C71FFDDBFA3FFDDBFA2FFC5996BFFC5996BFFC498
6BFFD1AB85FFD8BA97FF9E5635DBFFFFFF000000000000000000FFFFFF00CE91
477ECD9C68FFE7CBB4FFD4A57AFFD0A077FFCF9E74FFFBF8F5FFFBF8F5FFCB9E
71FFCB9D71FFCDA177FFDFC0A5FFB98A5BFFA45C347EFFFFFF00000000000000
0000FFFFFF00D2934C22CE8E47E5D9B28CFFE6CAB3FFD6A97DFFD1A579FFE2C4
A8FFE1C3A8FFD0A276FFD1A477FFDDBDA2FFD0AC85FFAB6635E5A9653522FFFF
FF000000000000000000FFFFFF00FFFFFF00D4964D53CF8D47F4D9B28CFFE6CD
B8FFE0BA9DFFD7AB85FFD6A982FFD9B391FFE1C2ABFFD4AE86FFB16B35F4B16F
3553FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00FFFFFF00D697
4F53D19149E6D0A06AFFE0BFA0FFE3C5AEFFE3C5AEFFDFBC9FFFC89762FFBD7D
35E6BC7E3553FFFFFF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00D8985223D4964D7DD2924CDBCD8C45F3CB8B41F3C98B
40DBC78B407DC5873D23FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF000000000000000000
}
OnClick = hlpAboutExecute
end
end
end
object OpenDialog1: TOpenDialog
Width = 948
Height = 804
DefaultExt = '.exe'
Filter = 'All files (*.*)|*.*|Excutable files (*.exe)|*.exe|DLL (*.dll)|*.dll'
left = 338
top = 232
end
end

View File

@ -0,0 +1,226 @@
unit reMainUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ComCtrls, ActnList, Menus, ExtCtrls, Grids, resource,
bitmapresource, versionresource, groupcursorresource, groupiconresource;
type
{ TreMainForm }
TreMainForm = class(TForm)
fileSave: TAction;
HeaderControl1: THeaderControl;
hlpAbout: TAction;
fileExit: TAction;
fileOpen: TAction;
ActionList1: TActionList;
Image1: TImage;
ImageList1: TImageList;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
OpenDialog1: TOpenDialog;
PageControl1: TPageControl;
Splitter1: TSplitter;
StatusBar1: TStatusBar;
StringGrid1: TStringGrid;
tabString: TTabSheet;
tabImage: TTabSheet;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
TreeView1: TTreeView;
procedure fileExitExecute(Sender: TObject);
procedure fileOpenExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure HeaderControl1SectionResize(HeaderControl: TCustomHeaderControl;
Section: THeaderSection);
procedure hlpAboutExecute(Sender: TObject);
procedure Splitter1ChangeBounds(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
Res:TResources;
procedure LoadVersionResource(V:TVersionResource);
procedure LoadBitmapResource(B:TBitmapResource);
procedure LoadGroupIconResource(G:TGroupIconResource);
public
procedure OpenFile(const AFileName:string);
end;
var
reMainForm: TreMainForm;
implementation
{$R *.lfm}
uses
winpeimagereader, elfreader, coffreader, resreader, reAboutUnit,
stringtableresource, acceleratorsresource, reConstsUnit;
{ TreMainForm }
procedure TreMainForm.fileExitExecute(Sender: TObject);
begin
Close;
end;
procedure TreMainForm.fileOpenExecute(Sender: TObject);
begin
if OpenDialog1.Execute then
OpenFile(UTF8ToSys(OpenDialog1.FileName));
end;
procedure TreMainForm.FormCreate(Sender: TObject);
begin
Caption:=sResourceExplorer;
fileSave.Caption:=sSaveResource; //'Save resource...'
hlpAbout.Caption:=sAbout; //'About...'
fileExit.Caption:=sExit; //'Exit'
fileOpen.Caption:=sOpen; //'Open...'
MenuItem1.Caption:=sFile;
MenuItem2.Caption:=sHelp;
tabString.Caption:=sStrings;
tabImage.Caption:=sImage;
Splitter1ChangeBounds(nil);
end;
procedure TreMainForm.HeaderControl1SectionResize(
HeaderControl: TCustomHeaderControl; Section: THeaderSection);
begin
TreeView1.Width:=HeaderControl1.Sections[0].Width;
HeaderControl1.Sections[1].Width:=Width - TreeView1.Width;
end;
procedure TreMainForm.hlpAboutExecute(Sender: TObject);
begin
reAboutForm:=TreAboutForm.Create(Application);
reAboutForm.ShowModal;
reAboutForm.Free;
end;
procedure TreMainForm.Splitter1ChangeBounds(Sender: TObject);
begin
HeaderControl1.Sections[0].Width:=TreeView1.Width;
HeaderControl1.Sections[1].Width:=Width - TreeView1.Width;
end;
procedure TreMainForm.TreeView1Click(Sender: TObject);
var
ResItem:TAbstractResource;
begin
if Assigned(TreeView1.Selected) and Assigned(TreeView1.Selected.Data) then
begin
ResItem:=TAbstractResource(TreeView1.Selected.Data);
HeaderControl1.Sections[1].Text:=ResItem.ClassName + ' : ' + ResItem.Name.Name;
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)
else
;
end;
end;
procedure TreMainForm.LoadVersionResource(V: TVersionResource);
var
i,j, k:integer;
begin
PageControl1.ActivePage:=tabString;
k:=0;
StringGrid1.RowCount:=0;
StringGrid1.ColCount:=2;
for i:=0 to V.StringFileInfo.Count-1 do
begin
for j:=0 to V.StringFileInfo[i].Count-1 do
begin
StringGrid1.RowCount:=StringGrid1.RowCount + 1;
StringGrid1.Cells[0, k]:=SysToUTF8(V.StringFileInfo[i].Keys[j]);
StringGrid1.Cells[1, k]:=SysToUTF8(V.StringFileInfo[i].ValuesByIndex[j]);
inc(k);
end;
end;
end;
procedure TreMainForm.LoadBitmapResource(B: TBitmapResource);
begin
PageControl1.ActivePage:=tabImage;
B.BitmapData.Position:=0;
Image1.Picture.Bitmap.LoadFromStream(B.BitmapData);
//
end;
procedure TreMainForm.LoadGroupIconResource(G: TGroupIconResource);
begin
end;
procedure TreMainForm.OpenFile(const AFileName: string);
var
Ext:string;
Reader:TAbstractResourceReader;
i:integer;
Root, ResNode:TTreeNode;
begin
if not FileExists(AFileName) then exit;
Ext:=LowerCase(ExtractFileExt(AFileName));
if (Ext = '.exe') or (Ext = '.dll') then
Reader:=TWinPEImageResourceReader.Create
else
if (Ext = '.res')then
Reader:=TResResourceReader.Create
else
if (Ext = '.res')then
Reader:=TResResourceReader.Create
else
if (Ext = '.o')then
Reader:=TResResourceReader.Create
else
if (Ext = '')then
Reader:=TElfResourceReader.Create;
TreeView1.Items.Clear;
if Assigned(Res) then
Res.Free;
if not Assigned(Reader) then exit;
Res:=TResources.Create;
try
Res.LoadFromFile(AFileName, Reader);
for i:=0 to Res.Count-1 do
begin
Root:=TreeView1.Items.FindTopLvlNode(Res[i].ClassName);
if not Assigned(Root) then
Root:=TreeView1.Items.AddChild(nil, Res[i].ClassName);
ResNode:=TreeView1.Items.AddChild(Root, Res[i].Name.Name);
ResNode.Data:=Res[i];
end;
finally
Reader.Free;
end;
StatusBar1.SimpleText:=AFileName;
end;
end.