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

Composants VCL Delphi Discussion :

Récupérer et Insérer automatiquement le n° de version dans un programme


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut Récupérer et Insérer automatiquement le n° de version dans un programme
    Bonjour
    J'utilisais jusqu'à présent cette fonction pour récupérer le numéro de version de mon programme sans problème.
    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
    function ApplicationVersion: String;
    // récupérer la version mise dans Delphi
    var
      VerInfoSize, VerValueSize, Dummy: DWord;
      VerInfo: Pointer;
      VerValue: PVSFixedFileInfo;
    begin
      VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
      { Deux solutions : }
      if VerInfoSize <> 0 then
      { - Les info de version sont inclues }
      begin
        { On alloue de la mémoire pour un pointeur sur les info de version : }
        GetMem(VerInfo, VerInfoSize);
        { On récupère ces informations : }
        GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
        VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
        { On traite les informations ainsi récupérées : }
        with VerValue^ do
        begin
          result := IntToStr(dwFileVersionMS shr 16);
          result := result + '.' + IntToStr(dwFileVersionMS and $FFFF);
          result := result + '.' + IntToStr(dwFileVersionLS shr 16);
          result := result + '.' + IntToStr(dwFileVersionLS and $FFFF);
        end;
       { On libère la place précédemment allouée : }
        FreeMem(VerInfo, VerInfoSize);
      end
      else
        { - Les infos de version ne sont pas inclues }
        { On déclenche une exception dans le programme : }
        raise EAccessViolation.Create
          ('Les informations de version de sont pas inclues');
    end;
    Depuis Berlin 10.1 et l'update 1 il me déclenche une exception dans le programme .
    J'ai vérifié dans les options du projet, j'ai bien la coche sur Inclure les info de version
    Quelqu'un a t'il une idée ?
    Ou bien y a t'il une new façon de faire?
    Merci de vos réponses

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Ou est ce que tu as l'exception ? j'ai pas de problème avec ton code en 10.1 update 2.

  3. #3
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Bonjour avec retard

    Voici le message d'erreur du compilateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception 'first chance' à $774BA6F2.
    Classe d'exception EAccessViolation avec un message 'Les informations de version de sont pas inclues'. Processus GestionFactAgri2016.exe (3892)

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Ne pas oublier que les informations de version sont propres à chaque cible (win32, win64, debug, release, etc.).

  5. #5
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Bonjour Andonor

    Bien sur j'ai fait attention à tout cela dans la page option du projet

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    Que renvoie GetLastError après le premier GetFileVersionInfoSize ?

  7. #7
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Il renvoie 1813

  8. #8
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    si ça peu aider ... j'ai testé ton code tel quel sous Berlin 10.1 update 1
    et il fonctionne parfaitement !

    j'ai juste inclus les informations de version pour toutes les configurations et toutes les plateformes (bien qu'il n'y ait que Win32 de disponible dans la version Starter)

  9. #9
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    salut à tous

    J'ai aussi revérifier à nouveau l'insertion des infos de version dans toutes mes plateformes
    Toujours le même Pb

    Je précise que je suis sous Delphi Berlin update 2

    Je vais encore chercher la soluce !!!

  10. #10
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par gegila Voir le message
    salut à tous

    J'ai aussi revérifier à nouveau l'insertion des infos de version dans toutes mes plateformes
    Toujours le même Pb

    Je précise que je suis sous Delphi Berlin update 2

    Je vais encore chercher la soluce !!!
    Jai aucun problème en update 2, si tu crée un nouveau projet avec juste un bouton et tu met ton code derriere, tu récupères bien le 1.0.0.0 ?

  11. #11
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    J'essaye et je reviens vers vous

  12. #12
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Bonjour à tous

    J'ai essayé comme me le suggère RETWAS

    et cela marche.

    Bon il faut que j'approfondisse le problème au niveau de mon programme

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 689
    Points : 13 118
    Points
    13 118
    Par défaut
    N'aurais-tu pas un fichier de ressources perso lié à l'app qui écraserait/redéclarerait ces infos ?

  14. #14
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Bonsoir,

    Non pas de fichier ressource.

    Par contre je ne comprend tjs pas pourquoi ce Pb

    Je viens d'y passer du temps et je n'ai rien trouver d'anormal par rapport à l'ancien Prog qui marche tjs

    Je vais peut être poser la question sur l'aide car j'y ai encore droit

    merci pour tout

  15. #15
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Pas de réponse de l'aide Delphi.
    Si je trouve la solution je posterai de nouveau.

    Je clos la discussion pour l'instant

  16. #16
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut


    en Delphi 2007 et avant PChar et PANSIChar été synonyme . Ils signifient la même chose - Un pointeur vers une valeur ANSIChar. Char est synonyme d'ANSIChar dans ces versions.

    Cependant, dans Delphi 2009 et plus tard, Char devient synonyme de WideChar, donc PChar devient synonyme de PWideChar.
    il faut donc peut etre modifier ainsi

    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
     
    function ApplicationVersion: String;
    // récupérer la version mise dans Delphi
    var
      VerInfoSize, VerValueSize, Dummy: DWord;
      VerInfo: Pointer;
      VerValue: PVSFixedFileInfo;
    begin
      VerInfoSize := GetFileVersionInfoSize(PANSIChar(ParamStr(0)), Dummy);
      { Deux solutions : }
      if VerInfoSize <> 0 then
      { - Les info de version sont inclues }
      begin
        { On alloue de la mémoire pour un pointeur sur les info de version : }
        GetMem(VerInfo, VerInfoSize);
        { On récupère ces informations : }
        GetFileVersionInfo(PANSIChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
        VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
        { On traite les informations ainsi récupérées : }
        with VerValue^ do
        begin
          result := IntToStr(HIWORD(dwFileVersionMS));
          result := result + '.' + IntToStr(LOWORD(dwFileVersionMS));
          result := result + '.' + IntToStr(HIWORD(dwFileVersionLS));
          result := result + '.' + IntToStr(LOWORD(dwFileVersionLS));
        end;
       { On libère la place précédemment allouée : }
        FreeMem(VerInfo, VerInfoSize);
      end
      else
        { - Les infos de version ne sont pas inclues }
        { On déclenche une exception dans le programme : }
        raise EAccessViolation.Create
          ('Les informations de version de sont pas inclues');
    end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  17. #17
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    Salut

    J'ai essayé ta modif voila ce que cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Vérification des dépendances de projet...
    Compilation de GestionFactAgri2016.dproj (Debug, Win32)
    Ligne de commande dcc32 pour "GestionFactAgri2016.dpr"
    [dcc32 Avertissement] UnitFich.pas(1533): W1044 Transtypage de string en PAnsiChar suspect
    [dcc32 Erreur] UnitFich.pas(1533): E2010 Types incompatibles : 'PWideChar' et 'PAnsiChar'
    [dcc32 Avertissement] UnitFich.pas(1541): W1044 Transtypage de string en PAnsiChar suspect
    [dcc32 Erreur] UnitFich.pas(1541): E2010 Types incompatibles : 'PWideChar' et 'PAnsiChar'
    [dcc32 Erreur fatale] F2063 Impossible de compiler l'unité utilisée 'UnitFich.pas'
    Echec
    Temps écoulé :  00:00:00.4

  18. #18
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    ok donc ce n'est pas un problème de chaîne de caractère
    peut être un problème de langue ?
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  19. #19
    Membre habitué
    Homme Profil pro
    Dev informatique retraité
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev informatique retraité
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 171
    Points
    171
    Par défaut
    A quel niveau d'après toi ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2013, 12h51
  2. Réponses: 3
    Dernier message: 16/09/2010, 12h54
  3. Réponses: 0
    Dernier message: 17/07/2009, 13h28
  4. Récupérer les lignes d'une procédure SQL Server dans le programme VB.NET
    Par Mikelester12 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 30/07/2007, 11h33
  5. Réponses: 63
    Dernier message: 06/07/2006, 15h29

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