Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #25  
Antiguo 27-12-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Poder: 23
santiago14 Va por buen camino
Wink

Buenas, buscando y buscando me topé con este post. Resulta que para mi trabajo necesito saber la fecha de compilación del ejecutable. Build que le dicen.
Aquí ví una variada gama de cosas así que me puse a probar, indagué un poco mas y me encontré con esto.

La fecha/hora de compilación está en el espacio de memoria "LastCompiledTime", que no aparece en el ejemplo, así que yo lo agregué en mi código...
Código Delphi [-]
procedure TfrmGetDateVersion.btnDetailsFileClick(Sender: TObject);
type
  TEXEVersionData = record
    CompanyName,
    FileDescription,
    FileVersion,
    InternalName,
    LegalCopyright,
    LegalTrademarks,
    OriginalFileName,
    ProductName,
    ProductVersion,
    Comments,
    PrivateBuild,
    SpecialBuild,
    LastCompiledTime:string;
  end;

var
  vData:TEXEVersionData;

  function GetEXEVersionData(const FileName: string): TEXEVersionData;
  type
    PLandCodepage = ^TLandCodepage;
    TLandCodepage = record
      wLanguage,
      wCodePage: word;
    end;
  var
    dummy,
    len: cardinal;
    buf, pntr: pointer;
    lang: string;
  begin
    len := GetFileVersionInfoSize(PChar(FileName), dummy);
    if len = 0 then
      RaiseLastOSError;
    GetMem(buf, len);
    try
      if not GetFileVersionInfo(PChar(FileName), 0, len, buf) then
        RaiseLastOSError;

      if not VerQueryValue(buf, '\VarFileInfo\Translation\', pntr, len) then
        RaiseLastOSError;

      lang := Format('%.4x%.4x', [PLandCodepage(pntr)^.wLanguage, PLandCodepage(pntr)^.wCodePage]);

      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\CompanyName'), pntr, len){ and (@len <> nil)} then
        result.CompanyName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\FileDescription'), pntr, len){ and (@len <> nil)} then
        result.FileDescription := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\FileVersion'), pntr, len){ and (@len <> nil)} then
        result.FileVersion := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\InternalName'), pntr, len){ and (@len <> nil)} then
        result.InternalName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LegalCopyright'), pntr, len){ and (@len <> nil)} then
        result.LegalCopyright := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LegalTrademarks'), pntr, len){ and (@len <> nil)} then
        result.LegalTrademarks := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\OriginalFileName'), pntr, len){ and (@len <> nil)} then
        result.OriginalFileName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\ProductName'), pntr, len){ and (@len <> nil)} then
        result.ProductName := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\ProductVersion'), pntr, len){ and (@len <> nil)} then
        result.ProductVersion := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\Comments'), pntr, len){ and (@len <> nil)} then
        result.Comments := PChar(pntr);
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\PrivateBuild'), pntr, len){ and (@len <> nil)} then
        result.PrivateBuild := PChar(pntr);
//Esto lo agregué yo
      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\LastCompiledTime'), pntr, len){ and (@len <> nil)} then
        result.LastCompiledTime := PChar(pntr);

      if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\SpecialBuild'), pntr, len){ and (@len <> nil)} then
        result.SpecialBuild := PChar(pntr);

    finally
      FreeMem(buf);
    end;
  end;
begin
  if dlg1.Execute() then
  begin
    vData:=GetEXEVersionData(dlg1.FileName);
    mmo2.Lines.Text:='1';
  end ;
end;

Con esto podemos saber la fecha de última compilación. Sigo haciendo pruebas pero me parece que es el camino.

La cosa me devuelve un string con un campo que tiene la fecha y la hora, queda pasar eso a TimeStamp para completar la secuencia.

Espero haber ayudado.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
 



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
insertar fecha con ado y Tquery microbiano Conexión con bases de datos 5 12-11-2009 19:26:01
obtener solo la fecha en formato fecha y sin hora BlueSteel SQL 14 09-05-2008 16:42:19
Problema insertar fecha Nomad SQL 17 17-01-2008 22:50:46
Insertar fecha desde NxDatePicker JcTaztoman Varios 0 26-09-2007 18:30:18
Como insertar fecha en un proyecto Adonis Varios 2 18-09-2007 03:52:02


La franja horaria es GMT +2. Ahora son las 06:52:23.


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