IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Date et heure de compilation d'un projet


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 408
    Points : 307
    Points
    307
    Par défaut Date et heure de compilation d'un projet
    Bonjour,
    Dans les informations de version que Delphi intègre dans un exe, figure le numéro de version que je récupère via ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
      if (iBufferSize > 0) then
      begin
        GetMem(pBuffer, iBufferSize);
        try
        // get fixed file info (language independent)
        GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
        VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
        // read version blocks
        iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
        iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
        iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
        iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
        finally
          FreeMem(pBuffer);
        end;
        // format result string
        Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
      end;
    Delphi intègre aussi les informations de date et heure de compilation, que je souhaite récupérer pour afficher dans une fenêtre d'infos sur l'application, mais je n'ai pas trouvé comment les récupérer.
    Je ne sais pas quoi mettre dans le VerQueryValue.
    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 745
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 745
    Points : 13 306
    Points
    13 306
    Par défaut
    Le PE Header contient un TimeStamp mais pas les infos de version.
    Pourquoi ne pas utiliser simplement FileAge sur Application.ExeName ?

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    personnellement j'utilise un fichier ressource (plus facile à suivre sur SVN)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    1 VERSIONINFO
    FILEVERSION 2016,5,12,1805
    PRODUCTVERSION 1,11,3,0
    FILETYPE 1 {
    	BLOCK "StringFileInfo" {
    		BLOCK "040C04E4" {
    			VALUE "FileDescription", "Mon produit à moi\000"
    			VALUE "FileVersion", "2016.5.12.1805\000"
    			VALUE "LegalCopyright", "©2016 Execute SARL\000"
    			VALUE "ProductName", "MyProduct\000"
    			VALUE "ProductVersion", "1.11.3.0\000"
    			VALUE "Comment", "http://www.execute.fr\000"
    		}
    	}
    	BLOCK "VarFileInfo" {
    		VALUE "Translation", 0x040C, 0x04E4
    	}
    }
    J'utilise donc FileVersion pour stocker la date yyy.mm.dd.hhnn et le ProductVersion pour la version du produit. Ce n'est pas exactement une date de compilation mais plus la date d'upload dans SVN...qui doit donner toujours exactement la même application.

    et pour lire la version

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    function GetVersion: string;
    var
      FileName   : string;
      VersionInfo: DWORD;
      InfoSize   : Cardinal;
      InfoData   : array of Byte;
      FixedInfo  : PVSFixedFileInfo;
      Version    : PChar;
    begin
      Result := 'DEBUG';
      FileName := ParamStr(0);
      InfoSize := GetFileVersionInfoSize(PChar(FileName), VersionInfo);
      if InfoSize = 0 then
        Exit;
      SetLength(InfoData, InfoSize);
      if not GetFileVersionInfo(PChar(FileName), VersionInfo, InfoSize, @InfoData[0]) then
        Exit;
      if not VerQueryValue(@InfoData[0], '\', Pointer(FixedInfo), InfoSize) then
        Exit;
     
    // version textuelle ?
      if Loword(FixedInfo.dwProductVersionLS) = 0 then
      begin
        if VerQueryValue(@InfoData[0], '\StringFileInfo\040C04E4\ProductVersion', Pointer(Version), InfoSize) then
        begin
          Result := 'V' + Version;
          Exit;
        end;
      end;
     
    // sinon construire un numéro de version binaire
      Result := Format('V%d.%d.%d', [Hiword(FixedInfo.dwProductVersionMS), Loword(FixedInfo.dwProductVersionMS), Hiword(FixedInfo.dwProductVersionLS)]);
     
    // avec des Release Candidates
      if Loword(FixedInfo.dwProductVersionLS) <> 0 then
        Result := Result + ' RC' + IntToStr(Loword(FixedInfo.dwProductVersionLS));
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 408
    Points : 307
    Points
    307
    Par défaut
    Ok pour le fichier de ressources, mais delphi insère un champ LastCompilesTime, on doit bien le retrouver en quelque part ?


    Nom : Version.jpg
Affichages : 558
Taille : 174,4 Ko

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 644
    Points : 10 599
    Points
    10 599
    Par défaut
    Cela peut-être simplement la date de modification de ton exécutable

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par Bernard B Voir le message
    Ok pour le fichier de ressources, mais delphi insère un champ LastCompilesTime, on doit bien le retrouver en quelque part ?


    Nom : Version.jpg
Affichages : 558
Taille : 174,4 Ko
    ça n'existe pas par défaut dans Delphi, j'ai l'impression que ça vient de CNPack
    https://searchcode.com/codesearch/view/13574541/

    ce code semble lié à cette information également
    http://www.michael-puff.de/Programmi...imeStamp.shtml
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 408
    Points : 307
    Points
    307
    Par défaut
    Bien vu Paul, j'ai bien le CnPack installé
    Je vais regarder les deux liens pour voir comment exploiter cette donnée.
    Encore Merci

Discussions similaires

  1. Combien d'heures passez vous sur vos projets
    Par Issam dans le forum Débats sur le développement - Le Best Of
    Réponses: 76
    Dernier message: 09/12/2007, 19h53
  2. récupérer la date et heure système
    Par Rnx69 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2005, 15h43
  3. [date et heure] convertion d'une date en chaîne
    Par jean-jacques varvenne dans le forum SQL
    Réponses: 5
    Dernier message: 23/03/2005, 11h31
  4. Manipulations de dates et heures
    Par benj63 dans le forum C++
    Réponses: 5
    Dernier message: 16/12/2004, 15h09
  5. Compilation d'un projet récupéré
    Par mathieu dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 28/07/2004, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo