Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LECTURE DU NUMÉRO DE VERSION DE L'APPLICATION


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 12/04/2002 Date de mise à jour : 12/04/2002 00:22:40 Vu / téléchargé: 2 478 / 134

Note :
8,75 / 10 - par 4 personnes
8,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Voici une petite fonction qui lit le numéro de version de votre application.
Pour que votre application contienne un numéro de version il faut aller dans Menu Projet\Options... puis dans l'onglet 'Informations de Version' cocher la case 'Inclure les informations de version dans le projet'

Ce numéro apparaît aussi dans l'explorateur windows par un click droit sur votre application puis Propriétés\Onglet version.

--- Nono du Moulin ---

 

Source

  • Function LectureVersion:String;
  • Var
  • S : String;
  • Taille : DWord;
  • Buffer : PChar;
  • VersionPC : PChar;
  • VersionL : DWord;
  • Begin
  • Result:='';
  • {--- On demande la taille des informations sur l'application ---}
  • S := Application.ExeName;
  • Taille := GetFileVersionInfoSize(PChar(S), Taille);
  • If Taille>0
  • Then Try
  • {--- Réservation en mémoire d'une zone de la taille voulue ---}
  • Buffer := AllocMem(Taille);
  • {--- Copie dans le buffer des informations ---}
  • GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
  • {--- Recherche de l'information de version ---}
  • If VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
  • Then Result:=VersionPC;
  • Finally
  • FreeMem(Buffer, Taille);
  • End;
  • End;
Function LectureVersion:String;
Var
  S         : String;
  Taille    : DWord;
  Buffer    : PChar;
  VersionPC : PChar;
  VersionL  : DWord;

Begin
  Result:='';
  {--- On demande la taille des informations sur l'application ---}
  S := Application.ExeName;
  Taille := GetFileVersionInfoSize(PChar(S), Taille);
  If Taille>0
  Then Try
  {--- Réservation en mémoire d'une zone de la taille voulue ---}
    Buffer := AllocMem(Taille);
  {--- Copie dans le buffer des informations ---}
    GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
  {--- Recherche de l'information de version ---}
    If VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
      Then Result:=VersionPC;
  Finally
    FreeMem(Buffer, Taille);
  End;
End;
 

Conclusion

P.S. J'ai écrit cette procédure car celle dans l'aide de Delphi ne fonctionne pas sans modifications, du moins par sur mon poste. Quelqu'un a-t-il eu le même problème ?
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Delphiprog le 09/05/2002 23:42:16 administrateur CS

Dans le cas d'une DLL, l'activation du numéro de version dans Options/Projet est accessible  mais ne produit aucun effet (du moins sous Delphi 4).
Pour pouvoir lire le n° de version à l'éxécution, insérer {$R *.res} dans le source du projet, avant le begin.

signaler à un administrateur
Commentaire de SystemNet le 13/07/2004 00:49:05

Bonjour, je suis novice, j'ai fais une petite application en delphi qu icahrge un contenue de page web. j'aimerais faire vérifier la version du programme par rapport à la dernière version en cour. Quelqu'un pourrais jsut em'aider à me dire dans delhpi, dans mon projet, ce que je dois faire pour que en gros :
WebBrowser1.Navigate('http://xcom.system-net.biz/index.php?version=');
Apres version= il y ai de marqué le n° de version. Merci bcp

signaler à un administrateur
Commentaire de jmp77 le 02/03/2005 09:57:23

Hello,

Super source nono40.

Par contre je n'arrive pas à obtenir le numéro de version dans les dll. A chaque fois que j'essaie je recupere toujours la version de l'exe qui lance la dll.
Ceci est normal car S := Application.ExeName; renvoi le chemin de l'exe j'ai essayer en mettant le chemin de ma dll en dur S := C:\data\madll.dll et là hop ca fonctionne tres bien.
Est ce que vous auriez un remede svp?

Bonne continuation,
JMP77.

signaler à un administrateur
Commentaire de jmp77 le 02/03/2005 09:58:45

PS : cette source mérite un bon 10/10 pour moi.

signaler à un administrateur
Commentaire de jmp77 le 02/03/2005 10:57:14

Re,

C'est bon j'ai trouvé grave à ce site :
http://www.martinstoeckli.ch/delphi/delphi.html#AppName

Voici avec cette modification le numéro de version d'un exe ou d'une dll fonctionne :

function LectureVersion:string;
//D'après le code de nono40 http://www.delphifr.com/code.aspx?ID=11847

    function Sto_GetModuleName: String;
   //D'apres http://www.martinstoeckli.ch/delphi/delphi.html#AppName
   var
   szFileName: array[0..MAX_PATH] of Char;

   begin
   GetModuleFileName(hInstance, szFileName, MAX_PATH);
   Result := szFileName;
   end
var
    S        : string;
    Taille  : DWord;
    Buffer  : PChar;
    VersionPC : PChar;
    VersionL    : DWord;

begin
    Result:='';
    {--- on demande la taille des informations sur l'application ---}
    S := Sto_GetModuleName;//Application.ExeName;
    Taille := GetFileVersionInfoSize(PChar(S), Taille);
    if Taille>0
    then try
    {--- Réservation en mémoire d'une zone de la taille voulue ---}
    Buffer := AllocMem(Taille);
    {--- Copie dans le buffer des informations ---}
    GetFileVersionInfo(PChar(S), 0, Taille, Buffer);
    {--- Recherche de l'information de version ---}
    if VerQueryValue(Buffer, PChar('\StringFileInfo\040C04E4\FileVersion'), Pointer(VersionPC), VersionL)
        then Result:=VersionPC;
    finally
    FreeMem(Buffer, Taille);
    end;
end;

signaler à un administrateur
Commentaire de bib34690 le 19/09/2005 12:31:29

Bonjour,

Il semble que ce code ne marche pas pour certains EXE, comme Winword.exe ou Excel.exe, alors que ces informations sont visibles si on fait un clic droit sur le fichier.
quelqu'un aurait-il une soluce ?
Merci.

signaler à un administrateur
Commentaire de jmp77 le 19/09/2005 13:50:11

Hello,

Ca ne fonctionne qu'avec l'exe que tu as compilé.

++,
JMP77.

signaler à un administrateur
Commentaire de bib34690 le 19/09/2005 16:47:44

ça marche avec n'importe quel prog. si on remplace S par File Info passé en param.

... j'ai entretemps trouvé la solution que je publierai dès que j'aurais fini de la tester...c'est un problème de langue...
le code ci-dessus ne marche que si le programme est de type "Français"
Winword et Excel sont compilés avec pour langue "langue neutre" ???...sacré bilou !
Il faut donc "trasncrire" 'FileVersion' en fonction de la langue du fichier.
@ + pour la soluce.

signaler à un administrateur
Commentaire de bib34690 le 19/09/2005 16:51:36

Voila mon nouveau code :
Function LectureVersion(FileName:String):String;

Var
  Handle   : DWord;
  Info     : Pointer;
  InfoData : Pointer;
  InfoSize : LongInt;
  DataLen  : UInt;
  LangPtr  : Pointer;
  InfoType : string;

Begin
  Result:='';
  //--- On demande la taille necessaire pour stocker les infos
  InfoSize:= GetFileVersionInfoSize(PChar(FileName), Handle);
  If (InfoSize>0) Then begin
    //--- Réservation en mémoire d'une zone de la taille voulue ---
    GetMem(Info, InfoSize);
    try
      //--- Copie dans le buffer des informations ---
      InfoType:='FileVersion';
      if GetFileVersionInfo(PChar(FileName), Handle, InfoSize, Info) then begin
         if VerQueryValue(Info,'\VarFileInfo\Translation',LangPtr, DataLen) then
            InfoType:=Format('\StringFileInfo\%0.4x%0.4x\%s'#0,[LoWord(LongInt(LangPtr^)),
                                         HiWord(LongInt(LangPtr^)), InfoType]);
         if VerQueryValue(Info,PChar(InfoType),InfoData,Datalen) then
             Result:=strPas(InfoData);
      end;
    Finally
      FreeMem(Info, InfoSize);
    End;
  End;
End;

Merci au forim developpez.com ou j'ai trouvé la solution que j'ai adaptée au code ci-dessus.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,123 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.