Le 06/11/2013 15:46, Anton Kavalenka a écrit :
Handle of EXE (hInstance) or .SO hMod:=Loadlibrary(dll_name);
Works fine on Win32 with hInstance: great ! 8-)
I guess it will run on Linux too
Thanks.

regards,
Anton
The code I use for Linux is the next one, which works almost the same except that the source is a file:

function ReadVersionInfo(const sProgram: string; Out vv: String) :Boolean;
var
  RS : TResources;
  E : TElfResourceReader;
  VR : TVersionResource;
  I : Integer;
begin
  Result := False; //no version info at all in the file
  RS:=TResources.Create;
  try
    E:=TElfResourceReader.Create;
    try
      Rs.LoadFromFile(sProgram,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 begin
      vv:= Format('%d.%d.%d.%d',[VR.FixedInfo.FileVersion[0], VR.FixedInfo.FileVersion[1], VR.FixedInfo.FileVersion[2], VR.FixedInfo.FileVersion[3]]);
    End ;
  Finally
    RS.FRee;
  end;

Question is: does an equivalent to the "TElfResourceReader" exist for Windows executable files ?
I'm pretty sure that you do guess what I'm trying to do: have only one fuction to retrieve the version of any program on any platform. If a version using a file name can be setup, wonking on the current program is easy: check on ParamStr(0).
Maybe a couple of [$IFDEF ...} will be needed but this is not an issue.
BTW, if the procedure works for WinCE too I'll be the happiest man on world.
If this piece of code could be helpfull to others, it could be integrated to FPC or Lazarus, whatever.
It will need some rewriting though.

Antonio.



--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

--
Sita
                Software
Antonio Fortuny
Senior Software engineer

220, avenue de la Liberté
L-4602 Niederkorn
Tel.: +352 58 00 93 - 93
www.sitasoftware.lu
Your IT Partner

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to