Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 20-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Ok!.. fíjate que internamente la función VersionExe utiliza la winapi GetFileVersionInfo a la cual hice referencia. También terminas obteniendo un registro del tipo TVSFixedFileInfo con dos valores que luego descompones en cuatro. Yo lo que digo es utilizar esos dos valores sin pasarlos a string, es algo mucho mas óptimo ya que se trata de únicamente dos evaluaciones aritméticas por cada comparación.

Hice esto, está sin probar:

Código Delphi [-]
function GetFileInfo(AFileName: PChar): TVSFixedFileInfo;
var
  dwSize, dwSize2: DWORD;
  lpData, lpData2: Pointer;
begin
  ZeroMemory(@Result, SizeOf(TVSFixedFileInfo));
  if FileExists(AFileName) then
  begin
    dwSize := GetFileVersionInfoSize(AFileName, dwSize2);
    if dwSize > 0 then
    begin
      GetMem(lpData, dwSize);
      try
        GetFileVersionInfo(AFileName, 0, dwSize, lpData);
        VerQueryValue(lpData, '\', lpData2, dwSize2);
        Move(lpData2^, Result, dwSize2);
      finally
        FreeMem(lpData);
      end;
    end;
  end;
end;


function GetFileVersion(AFileName: string): string;
begin
  with GetFileInfo(PChar(AFileName)) do
    Result:= Format('%d.%d.%d.%d', [HiWord(dwFileVersionMS),
                                    LoWord(dwFileVersionMS),
                                    HiWord(dwFileVersionLS),
                                    LoWord(dwFileVersionLS)] );
end;

function CompareFileVersions(AFileName1, AFileName2: string): Integer;
var
  FileInfo1, FileInfo2: TVSFixedFileInfo;
begin
  FileInfo1 := GetFileInfo(PChar(AFileName1));
  FileInfo2 := GetFileInfo(PChar(AFileName2));

  Result := CompareValue(FileInfo1.dwFileVersionMS, FileInfo2.dwFileVersionMS);

  if Result = 0 then
    Result := CompareValue(FileInfo1.dwFileVersionLS, FileInfo2.dwFileVersionLS);
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 20-01-2010 a las 19:41:31. Razón: Correciones en la redacción
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fecha de mayor a menor alcides Varios 2 15-02-2008 16:46:09
Que versión de php necesito para que funcione en mi server lo que hago el Delphi4php cooper PHP 3 01-05-2007 04:21:46
como puedo hacer para cambiar un archivo de excel con versión 2.1 a versión 8.0 RONPABLO Servers 4 23-01-2006 06:02:38
Me hago mayor? Me invento las cosas? Soy autosugestionable? papulo Varios 6 11-11-2005 21:37:07
ordenar un DBGrid de mayor a menor jmlifi Varios 2 03-11-2005 16:36:34


La franja horaria es GMT +2. Ahora son las 17:54:02.


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