Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   versión de una dll (https://www.clubdelphi.com/foros/showthread.php?t=874)

ingacg 27-05-2003 20:07:21

versión de una dll
 
Hola, de casualidad, alguno de ustedes sabe como puedo obtener la versión de una dll?.

de antemano, gracias.

__cadetill 27-05-2003 23:50:21

Para un exe te valdria esta funcion

Código:

  function GetAppVersion : string;
  var Size, Size2: DWord;
      Pt, Pt2: Pointer;
  begin
        Size := GetFileVersionInfoSize(PChar (ParamStr (0)), Size2);
        if Size > 0 then
        begin
              GetMem (Pt, Size);
              try
                GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
                VerQueryValue (Pt, '\', Pt2, Size2);
                with TVSFixedFileInfo (Pt2^) do
                  begin
                      Result:= ' Versión '+
                                IntToStr (HiWord (dwFileVersionMS)) + '.' +
                                IntToStr (LoWord (dwFileVersionMS)) + ' Build ' +
                                IntToStr (HiWord (dwFileVersionLS)) + '.' +
                                IntToStr (LoWord (dwFileVersionLS));
                  end;
              finally
                    FreeMem (Pt);
              end;
        end;
  end;

Nunca lo he probado en una dll, pero... no estaria de menos probarlo. Si lo pruebas y te sirve, ya nos lo diras ;)

ingacg 28-05-2003 00:45:25

Ok, mil Gracias Cadetelli, lo voy a probar y con gusto les aviso!

jafl1965 04-06-2003 02:07:31

Bueno Ingacg, y por fin sirvió para una dll?

ingacg 04-06-2003 17:07:43

Ups!, siento decepcionarlos, pero nop..., de hecho creo que no fuí muy explícito...hagan de cuenta que yo voy a cargar una dll con un loadlibrary('c:\MIDll.dll'), pero necesito saber la versión de la dll que quiero cargar (en ésta caso le versión de c:\MIDll.dll), para que en base a la versión haga los ajustes en mi programa..

Saludos a todos

delphi.com.ar 04-06-2003 17:18:00

Yo he probado este código, que es el que ofrece cadetill con algún cambio sutil, y funciona.

Código:

function GetFileVersion( AFileName : String ) : string;
var
  Size,
  Size2 : DWord;
  Pt,
  Pt2  : Pointer;
begin
  Size := GetFileVersionInfoSize(PChar(AFileName), Size2);
  if Size > 0 then
  begin
    GetMem(Pt, Size);
    try
      GetFileVersionInfo (PChar(AFileName), 0, Size, Pt);
      VerQueryValue (Pt, '', Pt2, Size2);
      with TVSFixedFileInfo (Pt2^) do
        Result:= Format('Versión %d.%d Build %d.%d', [ HiWord(dwFileVersionMS),
                                                      LoWord(dwFileVersionMS),
                                                      HiWord(dwFileVersionLS),
                                                      LoWord(dwFileVersionLS)] );
    finally
      FreeMem (Pt);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := GetFileVersion( 'C:\WINDOWS\Moricons.dll' );
end;


ingacg 04-06-2003 17:42:25

Orale!, si funcionó, perfectamente!

Les agradezco a delphi.com.ar y a Cadetelli, por tomarse la molestia de contestar esta duda.

Saludos desde México

tango01 24-06-2003 16:17:45

siguiendo con este tema.....

como puedo saber si una dll esta registrada en windows.
y como puedo saber el path a la dll registrada.

llendo a lo concreto.

mi programa necesita, por ejemplo midas.dll pero yo antes de registrar mi dll quisiera saber si ya esta registrada... para luego obtener el path y la version y en base a esto decidir si registrar o no la version de la dll que trae mi programa....

muy amables por su ayuda..

gracias de anteman.

delphi.com.ar 24-06-2003 17:49:05

Ante todo te comento que desconozco si MIDAS necesita estar registrada pero te cuento que no todas las DLLs se registran, si quieres aquí te cuentan que DLL´s son "registrables" y no son mas que DLL´s Win32, con un juego específico de procedimientos y funciones que les da esa flexibilidad y funcionalidad. Bueno la idea de registrar los Objetos COM es que podamos acceder a estos por su GUID, y el nombre de del archivo que contiene estos objetos puede cambiar, te recomiendo leer la ayuda de funciones como QueryPathOfRegTypeLib y LoadRegTypeLib.



Saludos!


La franja horaria es GMT +2. Ahora son las 21:54:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi