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

Delphi Discussion :

Connaître la version d'un fichier


Sujet :

Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Par défaut Connaître la version d'un fichier
    Bonjour tout le monde,
    je souhaiterais, comme dit le titre, connaître la version d'un fichier et principalement d'un exécutable.
    Je m'explique : quand vous faites "Propriétés" sur un fichier (clic droit) vous pouvez avoir plusieurs onglet dont un qui est "Version". Une fois dedans vous avez des informations et une liste d'élément pouvant donner des infos plus précises.
    Moi j'aurais besoin de connaitre, par programmation, l'élément "Version du fichier" et pas celle que l'on as en haut de la fenêtre ne me donne pas toujours la bonne information.
    Voilà j'espère que vous avez compris ma demande et vous remercie pour vos suggestions.

  2. #2
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    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
     
    function GetVersion(const NomApp: string): string;
    var
      VerSize : Dword;
      Zero : THandle;
      PBlock : Pointer;
      PS : Pointer;
      Size : Uint;
    begin
      VerSize := GetFileVersionInfoSize(PChar(NomApp), Zero);
      if VerSize = 0 then Exit;
      try
        GetMem(PBlock, VerSize);
        GetFileVersionInfo(PChar(NomApp), 0, VerSize, PBlock);
        VerQueryValue(PBlock, PChar('\\StringFileInfo\\040C04E4\\ProductVersion'),PS, Size);
        Result := StrPas(PS);
      finally
        FreeMem(PBlock);
      end;
    end;
    ceci devrait correspondre a tes besoins

  3. #3
    Membre expérimenté
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Par défaut Ma solution
    Une autre solution

    A toi de voir

    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
     
     
    //***********************************
    // Renvoi le numero de version de l'application
    //***********************************
    Function RenvoiVersion():String;
    var
     FileName: string;
     InfoSize, Wnd: DWORD;
     VerBuf: Pointer;
     FI: PVSFixedFileInfo;
     VerSize: DWORD;
    begin
     Result  := '';
     FileName := Application.ExeName;
     InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
     if InfoSize <> 0 then
     begin
      GetMem(VerBuf, InfoSize);
      try
       if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
        if VerQueryValue(VerBuf, PathDelim, Pointer(FI), VerSize) then
        Begin
         Result  := InttoStr(StrToInt(Copy(IntToHex(FI.dwFileVersionMS,8),1,4)));
         Result  := Result +'.'+InttoStr(StrToInt(Copy(IntToHex(FI.dwFileVersionMS,8),5,4)));
         Result  := Result + InttoStr(StrToInt(Copy(IntToHex(FI.dwFileVersionLS,8),1,4)));
        end;
      finally
       FreeMem(VerBuf);
      end;
     end;
    end;
    Pascal

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Par défaut
    le code de kaféine ne marche pas !!
    j'ai une erreur de ce style :
    Violation d'accès à l'adresse 0040404B dans le module 'Project1.exe'. Lecture de l'adresse 01C674FE

    je vais essayer le code de pascal et merci pour vos infos !!

  5. #5
    Membre confirmé
    Profil pro
    Directeur
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Par défaut
    Par ErazerZ:
    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
    {
    BlockKeys:
      CompanyName
      FileDescription
      FileVersion
      InternalName
      LegalCopyright
      OriginalFilename
      ProductName
      ProductVersion
    }
    function GetFileVersionInfo(Filename, BlockKey: String): String;
    var
      vSize, Dummy: DWORD;
      vData, Translation, Ip: Pointer;
    begin
      Result := '';
      vSize := GetFileVersionInfoSize(PChar(Filename), Dummy);
      if (vSize >0) then
      begin
        GetMem(vData, vSize);
        try
          GetFileVersionInfoA(PChar(Filename), 0, vSize, vData);
          if vData = nil then Exit;
          VerQueryValue(vData, '\\VarFileInfo\\Translation', Translation, vSize);
          if Translation = nil then Exit;
          VerQueryValue(vData, PChar(Format('\\StringFileInfo\\%.4x%.4x\\%s', [LOWORD(LongInt(Translation^)), HIWORD(LongInt(Translation^)), BlockKey])), Ip, vSize);
          if Ip = nil then Exit;
          SetString(Result, PChar(Ip), vSize -1);
        finally
          FreeMem(vData);
        end;
      end;
    end;

Discussions similaires

  1. [HTTP] Connaître la taille d'un fichier en ligne
    Par MiJack dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/09/2006, 00h35
  2. Version d'un fichier sous DevCpp
    Par KsmoinO dans le forum Windows
    Réponses: 4
    Dernier message: 11/05/2005, 14h17
  3. [Tomcat] Connaître la version depuis servlet
    Par david71 dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/02/2005, 19h03
  4. Connaître la version de windows?
    Par Age Piranha dans le forum Windows
    Réponses: 3
    Dernier message: 12/04/2004, 21h09
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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