From f8559610e0b474c6945971804f4f38798ae15a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Thu, 27 Jun 2024 16:08:00 +0200 Subject: [PATCH] * Restool example --- packages/fcl-res/examples/program.res | Bin 0 -> 130648 bytes packages/fcl-res/examples/restool.lpi | 61 +++++ packages/fcl-res/examples/restool.lpr | 358 ++++++++++++++++++++++++++ 3 files changed, 419 insertions(+) create mode 100644 packages/fcl-res/examples/program.res create mode 100644 packages/fcl-res/examples/restool.lpi create mode 100644 packages/fcl-res/examples/restool.lpr diff --git a/packages/fcl-res/examples/program.res b/packages/fcl-res/examples/program.res new file mode 100644 index 0000000000000000000000000000000000000000..2e0d531f09ab46e0ee6b2b65cabdb1cd7d252ef4 GIT binary patch literal 130648 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 HFWvV)9v*g< literal 0 HcmV?d00001 diff --git a/packages/fcl-res/examples/restool.lpi b/packages/fcl-res/examples/restool.lpi new file mode 100644 index 0000000000..cb9e6cd899 --- /dev/null +++ b/packages/fcl-res/examples/restool.lpi @@ -0,0 +1,61 @@ + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + </RunParams> + <Units> + <Unit> + <Filename Value="restool.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="restool"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf3"/> + </Debugging> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions> + <Item> + <Name Value="EAbort"/> + </Item> + <Item> + <Name Value="ECodetoolError"/> + </Item> + <Item> + <Name Value="EFOpenError"/> + </Item> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/packages/fcl-res/examples/restool.lpr b/packages/fcl-res/examples/restool.lpr new file mode 100644 index 0000000000..220860794b --- /dev/null +++ b/packages/fcl-res/examples/restool.lpr @@ -0,0 +1,358 @@ +program restool; + +{$R program.res} + +uses + custapp, sysutils, classes, resource, elfreader, resreader, coffreader, machoreader, dfmreader, + bitmapresource, stringtableresource, versionresource, groupiconresource, groupcursorresource, + acceleratorsresource; + +Type + TRunMode = (rmList,rmExtract); + + { TRestool } + + TRestool = Class(TCustomApplication) + private + FRunMode : TRunMode; + FResfile : TResources; + FinputFile : String; + FDestFile : String; + FResName,FResType : String; + FResIndex : integer; + function ProcessOptions: Boolean; + procedure Usage(const aErr: String); + procedure WriteResource(Res: TAbstractResource; const aDestFile: String); + Protected + procedure doRun; override; + procedure dumpresourcefile(const aFileName: String; var aDest: Text); + procedure ExtractResource(const aDestFile: String; aIdx: Integer); + procedure ExtractResource(const aDestFile, aType, aName: String); + public + constructor Create(aOwner : TComponent); override; + destructor destroy; override; + class function restypename(aID: Integer; AddNumeric: Boolean): string; + class function KnownTypeNameToID(aType : String) : Integer; + end; + +constructor TRestool.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + FResfile:=TResources.Create; +end; + +destructor TRestool.destroy; +begin + FreeAndNil(FResfile); + inherited destroy; +end; + +class function TRestool.restypename(aID : Integer; AddNumeric : Boolean) : string; + +begin + case aID of + RT_CURSOR : Result:='RT_CURSOR'; //Hardware-dependent cursor resource. + RT_BITMAP : Result:='RT_BITMAP'; //Bitmap resource. + RT_ICON : Result:='RT_ICON'; //Hardware-dependent icon resource. + RT_MENU : Result:='RT_MENU'; //Menu resource. + RT_DIALOG : Result:='RT_DIALOG'; //Dialog box. + RT_STRING : Result:='RT_STRING'; //String-table entry. + RT_FONTDIR : Result:='RT_FONTDIR'; //Font directory resource. + RT_FONT : Result:='RT_FONT'; //Font resource. + RT_ACCELERATOR : Result:='RT_ACCELERATOR'; //Accelerator table. + RT_RCDATA : Result:='RT_RCDATA'; //Application-defined resource (raw data). + RT_MESSAGETABLE : Result:='RT_MESSAGETABLE'; //Message-table entry. + RT_GROUP_CURSOR : Result:='RT_GROUP_CURSOR'; //Hardware-independent cursor resource. + RT_GROUP_ICON : Result:='RT_GROUP_ICON'; //Hardware-independent icon resource. + RT_VERSION : Result:='RT_VERSION'; //Version resource. + RT_DLGINCLUDE : Result:='RT_DLGINCLUDE'; //Never present in compiled form + RT_PLUGPLAY : Result:='RT_PLUGPLAY'; //Plug and Play resource. + RT_VXD : Result:='RT_VXD'; //VXD. + RT_ANICURSOR : Result:='RT_ANICURSOR'; //Animated cursor. + RT_ANIICON : Result:='RT_ANIICON'; //Animated icon. + RT_HTML : Result:='RT_HTML'; //HTML. + RT_MANIFEST : Result:='RT_MANIFEST'; //Microsoft Windows XP: Side-by-Side Assembly XML Manifest. + RT_DLGINIT : Result:='RT_DLGINIT'; //Never present in compiled form + else + Result:=''; + end; + if Result='' then + Result:=IntToStr(aID) + else if AddNumeric then + Result:=Result+' ('+IntToStr(aId)+')'; +end; + +class function TRestool.KnownTypeNameToID(aType: String): Integer; +begin + case aType of + 'RT_CURSOR' : Result:=RT_CURSOR; //Hardware-dependent cursor resource. + 'RT_BITMAP' : Result:=RT_BITMAP; //Bitmap resource. + 'RT_ICON' : Result:=RT_ICON; //Hardware-dependent icon resource. + 'RT_MENU' : Result:=RT_MENU; //Menu resource. + 'RT_DIALOG' : Result:=RT_DIALOG; //Dialog box. + 'RT_STRING' : Result:=RT_STRING; //String-table entry. + 'RT_FONTDIR' : Result:=RT_FONTDIR; //Font directory resource. + 'RT_FONT' : Result:=RT_FONT; //Font resource. + 'RT_ACCELERATOR' : Result:=RT_ACCELERATOR; //Accelerator table. + 'RT_RCDATA' : Result:=RT_RCDATA; //Application-defined resource (raw data). + 'RT_MESSAGETABLE' : Result:=RT_MESSAGETABLE; //Message-table entry. + 'RT_GROUP_CURSOR' : Result:=RT_GROUP_CURSOR; //Hardware-independent cursor resource. + 'RT_GROUP_ICON' : Result:=RT_GROUP_ICON; //Hardware-independent icon resource. + 'RT_VERSION' : Result:=RT_VERSION; //Version resource. + 'RT_DLGINCLUDE' : Result:=RT_DLGINCLUDE; //Never present in compiled form + 'RT_PLUGPLAY' : Result:=RT_PLUGPLAY; //Plug and Play resource. + 'RT_VXD' : Result:=RT_VXD; //VXD. + 'RT_ANICURSOR' : Result:=RT_ANICURSOR; //Animated cursor. + 'RT_ANIICON' : Result:=RT_ANIICON; //Animated icon. + 'RT_HTML' : Result:=RT_HTML; //HTML. + 'RT_MANIFEST' : Result:=RT_MANIFEST; //Microsoft Windows XP: Side-by-Side Assembly XML Manifest. + 'RT_DLGINIT' : Result:=RT_DLGINIT; //Never present in compiled form + else + Result:=-1; + end; +end; + +procedure TRestool.dumpresourcefile(const aFileName: String; var aDest : Text); + +Var + res : TAbstractResource; + aType,aName : string; + i : Integer; + +begin + FResFile.LoadFromFile(aFileName); + Writeln(aDest,'File ',aFileName,' contains ',FResFile.Count,' resources:'); + For I:=0 to FResFile.Count-1 do + begin + Res:=FResFile.Items[i]; + aName:=Res.Name.Name; + if res.name.DescType=dtID then + aName:='#'+aName; + aType:=ResTypeName(res._Type.ID,True); + Writeln(aDest,I:3,' : Type: ',aType,' name: ',aName); + end; +end; + +procedure TRestool.WriteResource(Res : TAbstractResource; const aDestFile : String); + +var + aCount : Int64; + S : TStream; +begin + if Res is TGroupCursorResource then + S:=TGroupIconResource(Res).ItemData + else if Res is TGroupIconResource then + S:=TGroupIconResource(Res).ItemData + else if Res is TBitmapResource then + S:=TBitmapResource(Res).BitmapData + else + S:=Res.RawData; + With TFileStream.Create(aDestFile,fmCreate) do + try + aCount:=CopyFrom(S,S.Size); + Writeln(stdErr,'Write ',aCount,' bytes from resource data to file: ',aDestFile); + finally + Free; + end; +end; + +function TRestool.ProcessOptions: Boolean; + +const + Short = 'h:i:n:t:m:xlo:'; + Long : Array of string = ('help','index:','name:','type:','mode:','extract','output:','list'); + +var + RM,Idx,Err : String; + S : Array of string; + +begin + Result:=False; + Err:=CheckOptions(Short,Long); + if (Err<>'') or HasOption('h','help') then + begin + Usage(Err); + Exit; + end; + S:=GetNonOptions(Short,long); + FDestFile:=GetOptionValue('o','output'); + if Length(S)>0 then + FinputFile:=S[0] + else if Length(S)>1 then + FDestFile:=S[1]; + if HasOption('x','extract') then + FRunMode:=rmExtract + else if HasOption('l','list') then + FRunMode:=rmList; + if HasOption('m','mode') then + begin + rm:=GetOptionValue('m','mode'); + case RM of + 'list' : FRunMode:=rmList; + 'extract' : FRunMode:=rmExtract; + else + Usage('Invalid run mode: '+RM); + Exit; + end; + end; + if FRunMode=rmExtract then + begin + if HasOption('i','index') then + begin + Idx:=GetOptionValue('i','index'); + FResIndex:=StrToIntDef(Idx,-1); + if FResIndex=-1 then + begin + Usage('Invalid (not numerical) value for index: '+Idx); + Exit; + end; + end + else + begin + FResIndex:=-1; + FResName:=GetOptionValue('n','name'); + FResType:=GetOptionValue('t','type'); + if (FResName='') or (FResType='') then + begin + Usage(Format('Need both type (got: "%s") and name (got: "%s") for extracting a resource. ',[fResType,fresName])); + Exit; + end; + end; + if FDestFile='' then + if FResIndex>0 then + FDestFile:=ChangeFileExt(FInputFile,Format('-resource-%d.dat',[FResIndex])) + else + begin + RM:=FResName; + if RM[1]='#' then + RM:=Copy(RM,2); + FDestFile:=ChangeFileExt(FInputFile,Format('-resource-%s-%s.dat',[FResType,RM])) + end; + end; + Result:=True; +end; + +procedure TRestool.Usage(const aErr: String); + +begin + If (aErr<>'') then + Writeln('Error: ',aErr); + Writeln('Usage : ',ExtractFileName(ParamStr(0)),' [options] [inputfile [outputfile]]'); + Writeln('Where options is one or more of:'); + Writeln('-h --help This message'); + Writeln('-i --index=IDX Index of resource to extract.'); + Writeln('-n --name=NAME Name of resource to extract'); + Writeln('-t --type=TYPE Type of resource to extract. Known type names (RT_RCDATA etc.) can be used.'); + Writeln('-l --list List resources in file.'); + Writeln('-x --extract Extract a resource from file. Specify -i or -n and -t options'); + Writeln('-o --output=FILE Filename to extract a resource to (or specify the name as the second non-option argument.'); + Writeln(' If no filename is given, a default name is constructed from either index or Filename to extract a resource to (or specify the name as the second non-option argument.'); + + (* + Short = 'h:i:n:t:m:xlo:'; + Long : Array of string = ('help','index:','name:','type:','mode:','extract','output:','list'); + + *) + ExitCode:=Ord(aErr<>''); +end; + +procedure TRestool.doRun; + +var + FOut : Text; + +begin + Terminate; + FInputFile:=ParamStr(0); + if not ProcessOptions then + Exit; + Case FRunMode of + rmList : + begin + if (FDestFile='') then + dumpresourcefile(FInputFile,Output) + else + begin + AssignFile(Fout,FDestFile); + Rewrite(Fout); + dumpresourcefile(FInputFile,Fout); + CloseFile(Fout); + end + end; + rmExtract: + begin + FResfile.LoadFromFile(FInputFile); + if FResIndex>=0 then + ExtractResource(FDestFile,FResIndex) + else + ExtractResource(FDestFile,FResType,FresName) + end; + end; +end; + +procedure TRestool.ExtractResource(const aDestFile: String; aIdx: Integer); + +var + Res : TAbstractResource; + +begin + if (aIdx<0) or (aIdx>=FresFile.Count) then + begin + ExitCode:=2; + Writeln(stdErr,'Resource with index ',aIdx,' not found. Max value for index: ',FresFile.Count-1); + Exit; + end; + Res:=FResfile.Items[aIdx]; + WriteResource(Res,aDestFile); +end; + +procedure TRestool.ExtractResource(const aDestFile, aType, aName: String); + +var + I : integer; + aTypeId,aID : TResID; + Res : TAbstractResource; + +begin + aTypeID:=0; + aID:=0; + I:=StrToIntDef(aType,-1); + if (I<0) then + I:=KnownTypeNameToID(aType); + if I>=0 then + aTypeID:=I; + I:=StrToIntDef(aName,-1); + if (I>=0) then + aID:=I; + if aTypeID>0 then + begin + if aID>0 then + Res:=FResfile.Find(aTypeID,aID) + else + Res:=FResfile.Find(aTypeID,aName) + end + else + begin + if aID>0 then + Res:=FResfile.Find(aType,aID) + else + Res:=FResfile.Find(aType,aName); + end; + if not Assigned(Res) then + begin + ExitCode:=2; + Writeln(stdErr,'Resource with type ',aType,' and name ',aName,' not found.'); + end; + WriteResource(Res,aDestFile); +end; + +Var + Application : TResTool; + +begin + Application:=TResTool.Create(Nil); + Application.Initialize; + Application.Run; + Application.Free; +end. +