[Lazarus] Version info

Antonio Fortuny a.fortuny at sitasoftware.lu
Tue Sep 18 09:26:50 CEST 2012



Le 18/09/2012 09:21, michael.vancanneyt at wisa.be a écrit :
>
>
> On Tue, 18 Sep 2012, Antonio Fortuny wrote:
>
>>>> FPC and Lazarus WiKi do only talk about the compiled target, not how
>>>> to extract resource data from other files. Of course, they have to be
>>>> compiled with FPC.
>>>
>>> The fileinfo unit in FPC has this ability.
>>>
>>> Michael.
>> yep but only for Windows (and WinCE), not Linux as they call
>> GetFileVersionInfoSizeA and GetFileVersionInfoSizeW in version.dll to
>> read the resource data information
>
> Yes.
> But as I wrote in another mail in this thread:
> I have a modified version of that unit that works for Linux as well; I
> use it in production.
>
> Here is the relevant part for non-windows:
>
> uses resource, elfreader, versiontypes,versionresource;
>
>
> Type
>    TVersionQuad = Array[1..4] of Word;
>
> Function GetFileVersion (Const AFileName : string; Var Version :
> TVersionQuad) : Boolean;
>
> Var
>    RS : TResources;
>    E : TElfResourceReader;
>    VR : TVersionResource;
>    I : Integer;
>
> begin
>    RS:=TResources.Create;
>    try
>      E:=TElfResourceReader.Create;
>      try
>        Rs.LoadFromFile(AFileName,E);
>      finally
>        E.Free;
>      end;
>      VR:=Nil;
>      I:=0;
>      While (VR=Nil) and (I<RS.Count) do
>        begin
>        if RS.Items[i] is TVersionResource then
>           VR:=TVersionResource(RS.Items[i]);
>        Inc(I);
>        end;
>      Result:=(VR<>Nil);
>      if Result then
>        For I:=1 to 4 do
>          Version[i]:=VR.FixedInfo.FileVersion[I-1];
>    Finally
>      RS.FRee;
>    end;
> end;
>
>
> Better yet would probably be to commit it in FPC SVN. I'll look into
> that as
> well :-)

Definitely great !
Thanks Michael
>
> Michael.
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>





More information about the Lazarus mailing list