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 :

Win32MajorVersion avec Delphi 7


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut Win32MajorVersion avec Delphi 7
    Je crois avoir lu tout ce qui a été écrit dans le forum sur "comment reconnaitre la version de windows"...

    Sauf que j'ai un résultat que je ne m'explique pas !
    J'ai un ordi sous XP et un autre Sous W7

    Sur les deux quand j'interroge Win32MajorVersion je récupère le même résultat !
    Major version "5" alors que sur W7 selon vos dires je devrais récupérer "6"

    Avez-vous une idée ? Une solution ?
    Cela tient-il au fait que je travaille encore avec Delphi 7 ?
    ( désolé mais je n'ai plus les moyens de suivre les releases et comme cela semblemarcher propre sous W7.... )

  2. #2
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par HPulluard Voir le message
    J'ai un ordi sous XP et un autre Sous W7
    Sur les deux quand j'interroge Win32MajorVersion je récupère le même résultat !
    Major version "5" alors que sur W7 selon vos dires je devrais récupérer "6"
    Avez-vous une idée ? Une solution ?
    Cela tient-il au fait que je travaille encore avec Delphi 7 ?
    En effet 5 en XP et 6 et Vista/W7/2K8, surement lié a D7. Sous BDS2006 on ne pouvait pas détecter les 'Windows Server 2008'
    en XE c'est Ok en utilisant l'API GetVersionEx() (pas retesté si plus simple en XE2)
    Sinon le lien MS :
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx


    Exemple de code (voir également le lien MS):
    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
     
    CASE Win32MajorVersion OF
        3: OS:='Windows NT 3.51';
        4: CASE Win32MinorVersion OF
             0:  OS:='Windows 95';
             2:  OS:='Windows NT 4.0';
             10: OS:='Windows 98';
             90: OS:='Windows ME';
           END;
        5: CASE Win32MinorVersion OF
             0:  OS:='Windows 2000';
             1:  OS:='Windows XP';
             2: IF GetSystemMetrics(SM_SERVERR2)= 0
                  THEN OS:='Windows Server 2003'
                  ELSE OS:='Windows Server 2003 R2'
           END;
        6:BEGIN
            CASE Win32MinorVersion OF
             0: IF Version_Etendue.wProductType=VER_NT_WORKSTATION
                  THEN OS:='Windows Vista'
                  ELSE OS:='Windows Server 2008';
             1: IF Version_Etendue.wProductType=VER_NT_WORKSTATION
                  THEN OS:='Windows 7'
                  ELSE OS:='Windows Server 2008 R2';
            END
          END
      ELSE
        OS:='Windows '+IntToStr(Win32MajorVersion)+'.'+IntToStr(Win32MinorVersion);
      END;
      IF Win32CSDVersion = ''
        THEN Result:=SysUtils.Format('%s (Build %d)', [OS, Win32BuildNumber])
        ELSE Result:=SysUtils.Format('%s %s (Build %d)', [OS, Win32CSDVersion, Win32BuildNumber]);

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Question con : Tu lancerais pas ton application en XP Mode ?
    Sous D7, je l'ai testé et ça fonctionnait jusqu'à Server 2008 R2 !

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Question con : Tu lancerais pas ton application en XP Mode ?
    Sous D7, je l'ai testé et ça fonctionnait jusqu'à Server 2008 R2 !
    Nop.
    Tu avais jusque 2K8 R2 sans utiliser l'API GetVersionEx() ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Sans GetVersionEx ?
    Tu voulais plutôt dire sans un appel explicite de GetVersionEx avec un OSVERSIONINFOEX
    car cela utilise aussi GetVersionEx pour remplir les constantes de SysUtils !
    Mais cela ne récupère que les informations du OSVERSIONINFO, il nous manque les versions étendues indiquant le type d'OS fourni par OSVERSIONINFOEX


    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
    procedure InitPlatformId;
    var
      OSVersionInfo: TOSVersionInfo;
    begin
      OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
      if GetVersionEx(OSVersionInfo) then
        with OSVersionInfo do
        begin
          Win32Platform := dwPlatformId;
          Win32MajorVersion := dwMajorVersion;
          Win32MinorVersion := dwMinorVersion;
          Win32BuildNumber := dwBuildNumber;
          Win32CSDVersion := szCSDVersion;
        end;
    end;
    Depuis Delphi 6, j'utilise CheckWin32Version
    Lorsque j'ai besoin de savoir si c'est un Serveur ou une Station, j’appelle manuellement GetVersionEx avec un OSVERSIONINFOEX au lieu d'un OSVERSIONINFO comme dans la FAQ : Comment obtenir la version de Windows ?
    Il faudrait d'ailleurs mettre à jour la FAQ pour 6.0 et 6.1 !

    Sinon la question du XP Mode, c'était pour HPulluard
    Lui c'est carrément un problème de 5 au lieu de 6, ton problème de D2006, c'était justement un wProductType est différent de VER_NT_WORKSTATION

  6. #6
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Sans GetVersionEx ?
    Tu voulais plutôt dire sans un appel explicite de GetVersionEx avec un OSVERSIONINFOEX
    Oui bien sur, j'avais pas mis tout le code, j'aime laisser les gens chercher un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      FUNCTION Version_Etendue:TOSVersionInfoEx; 
      BEGIN
        ZeroMemory(@Result,SizeOf(Result));
        Result.dwOSVersionInfoSize := SizeOf(Result);
        GetVersionEx(Result);
      END;
    Depuis Delphi 6, j'utilise CheckWin32Version
    Ouais mais je vois pas comment avec CheckWin32Version() tu peux faire la différence entre un W7=6.1 et un W2008R2=6.1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function CheckWin32Version(AMajor: Integer; AMinor: Integer = 0): Boolean;
    begin
      Result := (Win32MajorVersion > AMajor) or
                ((Win32MajorVersion = AMajor) and
                 (Win32MinorVersion >= AMinor));
    end;
    Note : le but, pour nous, n'étant pas de connaitre la version de Windows mais plus d'indiquer quel type de Windows.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Avec CheckWin32Version, je ne fais pas la différence W7 \ W2008R2, relit bien mes propos

    Citation Envoyé par ShaiLeTroll Voir le message
    Depuis Delphi 6, j'utilise CheckWin32Version
    Lorsque j'ai besoin de savoir si c'est un Serveur ou une Station, j’appelle manuellement GetVersionEx avec un OSVERSIONINFOEX au lieu d'un OSVERSIONINFO... wProductType est différent de VER_NT_WORKSTATION
    Citation Envoyé par Eric.H Voir le message
    Note : le but, pour nous, n'étant pas de connaitre la version de Windows mais plus d'indiquer quel type de Windows.
    Tu inventes des choses non ?
    Tu aimes bien déformé les propos ! Arrête la lecture en diagonale
    Où est-ce que HPulluard a parlé de la différence Station\Server dans sa question ?
    Ou alors tu détourne SON sujet à TON profit
    et le "nous" veut dire "toi et tes collègues" mais n'inclut pas HPulluard

    Citation Envoyé par HPulluard Voir le message
    Sur les deux quand j'interroge Win32MajorVersion je récupère le même résultat !
    Major version "5" alors que sur W7 selon vos dires je devrais récupérer "6"
    Il semble avoir un problème bien avant !
    D'où ma question sur un XP Mode de Seven !

    Attendons le retour de HPulluard !

  8. #8
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Attendons le retour de HPulluard !
    Oui en effet je me suis éloigné du sujet original sans même bien relire.
    Mea culpa mea maximum culpa

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Houla ...
    Va falloir aussi que je m'interroge sur pourquoi je ne reçois pas les notifications de réponses à ma question !
    Donc sorry de ne pas vous avoir remercié plus tôt de vos réponses ...
    Je vais regarder tout ça de plus près et tester ....

    Mais y'a tout de même des trucs très "spaces" !
    Quand par exemple j'interroge la base de registre je ne tombe pas sur la bonne...

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
    Quand je regarde avec regedit ... y'a bien écrit "6.1"
    Quand j'interroge par code ça me renvoit "5.1"

    Je pense que si je résouds l'un ça devrait aussi me résoudre l'autre...

    Je n'ai vraiment rencontré aucun PB à installer Delphi 7 sous W7 et tout semble fonctionner top moumoutte côté IDE et compil ... par contre semble y avoir des "chtis soucis collatéraux" à maîtiser pour les exe...

    Donc encore merci de vos réponses, je regarde etvous dit ....

    PS : qui n'a rien à voir...
    Le père Noel m'a amené "Dragon" l'émulateur de clavier vocal ...
    Je voulais voir si je pouvais coder avec...
    Si y'en a que cela intéresse je pourrais ouvrir un topic pour en parler....

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    On dirait que tu as deux variantes de Base de Registre !
    Est-ce un problème 32bits contre 64bits ???
    Pour le XP Mode, tu n'as pas répondu !

    Ton programme quand tu l'execute, comment sont ses bordures ?
    Transparente avec l'effet Glass façon Vista ou Bleu façon XP ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bon... pour résumer...

    Non je n'ai pas activé le mode XP sur mon exe.
    De toute façon c'est idem dans les 2 cas avc ou sans !

    1. J'ai donc fait une version où j'utilise la procedure "InitPlatformId" que vous m'avez fournie ...
    Aucune différence je me retrouve encore avec 5.1 et pas 6.1

    2. J'ai essayé d'implémenter la fonction "Version_étendue" avec TOSVersionInfoEx, mais j'ai toujours une erreur de compil sur GetVersionEx où cela me dit que son paramètre étant de type "Var" .... blalblablabla ...
    Ce fait que ce param se retrouve de type "var" m'a un peu boosté mon neurone vieillissant ...

    ALors je me dis que tous mes PB viennent peut-être d'ailleurs...
    Je sais que je vais m'attirer les foudres des puristes que vous êtes certainement, mais j'utilise des bibliothèques externes et notamment celles de LMD .... qui surchargent pas mal de trucs système.
    Je vais gratter aussi de ce côté !

    PS : a ma décharge pour les bibliothèques....
    Y'a un peu plus de 20 ans j'ai monté une boite d'informatique avec un ami.
    C'est moi qui développais ! Et écrire des "monstres de gestion" c'est infaisable seulou quasi seul sans l'aide de packages externes ( devExpress, WWW, Raize, LMD etc. ).
    Aujourd'hui cette boite fais vivre près de 40 personnes et est leader sur son marché. Donc j'ai pô de scrupules et je pense que ma stratégie de dev était la bonne...
    Perso depuis 2 ans je suis à la retraite ( histoire d'en profiter un peu avant qu'on nous la sucre :-) ) ais je continue de m'astiquer le neurone en écrivant des progs pour le plaisir.

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Citation Envoyé par HPulluard Voir le message
    1. J'ai donc fait une version où j'utilise la procedure "InitPlatformId" que vous m'avez fournie ...
    Aucune différence je me retrouve encore avec 5.1 et pas 6.1
    Euh, InitPlatformId c'est une fonction interne à SysUtils qui remplit les constantes ... passons ...

    Tu as effectivement un étrange comportement !
    As-tu essayé sur AUTRE pc Seven ? Tu as peut-être le tient qui est un peu pourri (celui de mon collègue, sa BDR est à la masse)
    Ton installation de Seven elle était à partir de Zéro ou c'est un update sur un XP ?

    Citation Envoyé par HPulluard Voir le message
    2. J'ai essayé d'implémenter la fonction "Version_étendue" avec TOSVersionInfoEx, mais j'ai toujours une erreur de compil sur GetVersionEx où cela me dit que son paramètre étant de type "Var" .... blalblablabla ...
    Ce fait que ce param se retrouve de type "var" m'a un peu boosté mon neurone vieillissant ...
    C'est tout à fait normal, il ne faut pas utiliser directement GetVersionEx déclaré dans Windows.pas de D7
    il faut soit la redéclarer la fonction en remplaçant l'utilisation de var pas un Pointeur (un peu chiant)
    ou alors reprendre l'astuce de syntaxe (transtypage brut) de la FAQ Comment obtenir la version de Windows ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
      osvi: TOSVersionInfoEx;
     
    begin
     
      FillChar(osvi, SizeOf(TOSVersionInfoEx), 0);
      osvi.dwOSVersionInfoSize:= SizeOf(TOSVersionInfoEx);
     
      GetVersionEx(POSVersionInfoEx(@osvi)^);

  13. #13
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par HPulluard Voir le message
    2. J'ai essayé d'implémenter la fonction "Version_étendue" avec TOSVersionInfoEx, mais j'ai toujours une erreur de compil sur GetVersionEx où cela me dit que son paramètre étant de type "Var" .... blalblablabla ...
    Ce fait que ce param se retrouve de type "var" m'a un peu boosté mon neurone vieillissant ...

    ALors je me dis que tous mes PB viennent peut-être d'ailleurs...
    Je sais que je vais m'attirer les foudres des puristes que vous êtes certainement, mais j'utilise des bibliothèques externes et notamment celles de LMD .... qui surchargent pas mal de trucs système.
    Je vais gratter aussi de ce côté !
    Salut HP,

    Il faudrait que tu montres le bout de code que tu as fait.
    Pour ma part j'ai utilisé la fonction de la dans un de tes programmes (Oui c'est moi qui te remplace a G..k..a ) et ça a bien fonctionné.


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
       TWVersion = (wvUnknown, wvWOld, wvW2k, wvWXP, wvWXPP64, wvW2k3, wvWVista, wvW7, wvNewVersion);
     
    function TFrm_Patch.GetWindowsVersion: TWVersion;
    var
      sWin32Platform: string;
    begin
      sWin32Platform := 'Win32Platform : ' + inttostr(Win32Platform) +
        ' -Maj. version : ' + inttostr(Win32MajorVersion) + ' -Min. version : ' +
        inttostr(Win32Platform);
      case Win32MajorVersion of
        3: Result := wvWOld; // 'Windows NT 3.51';
        4:
          case Win32MinorVersion of
            0:
              case Win32Platform of
                1:
                  case Win32CSDVersion[1] of
                    'A': Result := wvWOld; // 'Windows 95 SP 1';
                    'B': Result := wvWOld; // 'Windows 95 SP 2';
                  else
                    Result := wvUnknown; //sWin32Platform;
                  end;
                2: Result := wvWOld; // 'Windows NT 4.0'
              else
                Result := wvUnknown; // sWin32Platform;
              end;
            10:
              case Win32CSDVersion[1] of
                'A': Result := wvWOld; // 'Windows 98 SP 1';
                'B': Result := wvWOld; // 'Windows 98 SP 2';
              else
                // Result := 'Inconnue';
                Result := wvWOld; // sWin32Platform;
              end;
            90: Result := wvWOld; // 'Windows ME';
          else
            Result := wvUnknown; // sWin32Platform;
          end;
        5:
          case Win32MinorVersion of
            0: Result := wvW2k; //  'Windows 2000';
            1: Result := wvWXP; //  'Windows XP';
            2: Result := wvW2k3; //  'Windows 2003';
          else
            Result := wvUnknown; // sWin32Platform;
          end;
        6:
          case Win32MinorVersion of
            0: Result := wvWVista; // 'Vista';
            1: Result := wvW7; // 'Seven';
          else
            Result := wvUnknown; // sWin32Platform;
          end;
        7: Result := wvNewVersion; // 'Version ulterieure a Seven';
        8: Result := wvNewVersion; // 'Version ulterieure a Seven';
      else
        Result := wvUnknown; // sWin32Platform;
      end;
    end;

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Je m'exprime mal...
    J'ai bien vu que cette fonction était dans sysutils ... donc je remerçiais d'avoir appris kekchose aujourd'hui.
    J'ai toujours beaucoup d'appréhension à m'exprimer sur les forums de dev... et je suis souvent maladroit... car je suis à la base autodidacte ...
    Je n'ai donc pas la langage très "pro" .
    Mais comme j'ai commencé en 1985 ... je pense ne pas être trop mauvais :-)

    Pour le reste sur l'ordi W7 est un upgrade à partir de Vista donc devrait au minimum m'indiquer "6" et non pas "5".
    Mais ptet effectivement que c'est une install pourrie car j'ai récupéré un portable prêté à ma fille et qui la fait paser sous W7 pa un pote à elle ...
    Vu le pote en question, fectivement ... y'a des doutes :-)

    Sinon j'ai regardé dans les sources de LMD ...
    Pour faire court, dans ces packages il passe lui aussi par TOSVersionInfoEx et son code ressemble point par point à tout celui que vous m'avez indiqué.
    La surchage système de ce package ne devrait théoriquement pas poser de problème et je devrais avoir les bonnes réponses à ma fonction !...

    Donc à mon avis reste quasi plus que l'install pourrie comme réponse.

  15. #15
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Comme a dit Rayek, balance le bout de code que l'on puisse voir

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Voici mon code ...
    Rien que du "bon élève"
    Je ne l'ai pas mis au complet vu que ce n'est que la copie de ce que vous m'avez indiqué....

    Et j'ai toujours XP comme réponse ...

    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
     
    function WindowsVersion: TWVersion;
    var
      sWin32Platform: string;
      osvi: TOSVersionInfoEx;
     
    begin
     
      FillChar(osvi, SizeOf(TOSVersionInfoEx), 0);
      osvi.dwOSVersionInfoSize:= SizeOf(TOSVersionInfoEx);
      GetVersionEx(POSVersionInfo(@osvi)^);
      with OSVi do
      begin
          Win32Platform := dwPlatformId;
          Win32MajorVersion := dwMajorVersion;
          Win32MinorVersion := dwMinorVersion;
          Win32BuildNumber := dwBuildNumber;
          Win32CSDVersion := szCSDVersion;
      end;
     
      sWin32Platform := 'Win32Platform : ' + inttostr(Win32Platform) +
        ' -Maj. version : ' + inttostr(Win32MajorVersion) + ' -Min. version : ' +
        inttostr(Win32Platform);
      case Win32MajorVersion of
        3: Result := wvWOld; // 'Windows NT 3.51';
        4:...
    En tous cas grand merci à vous de m'avoir consacré du temps ...
    Je vous tiens au courant si j'ai du neuf ....
    Je vais essayer de tester ça une machine nativement installée sous W7...
    Si la réponse est correcte cela voudra bien dire que c'est mon ordi qui est mal installé.

  17. #17
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 577
    Points : 25 225
    Points
    25 225
    Par défaut
    Win32Platform, Win32MajorVersion ... c'est les constantes de SysUtils ? tu ne devrais pas les modifier, elles sont déjà rempli normalement !

    Ton problème ne concerne pas TOSVersionInfoEx !
    C'est Eric.H qui a étendu ta question à la détection Vista ou Server 2008 R2 !
    Tu n'en es pas encore là !

    utilise la fonction CheckWin32Version pour commencer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if CheckWin32Version(6, 1) then
     ShowMessage('Seven')
    else
      if CheckWin32Version(6, 0) then
        ShowMessage('Vista')
      else
         ShowMessage('XP ou moins');
    Contente toi de code simple de test, une fois qu'il passe, on pourra aller plus loin !

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    La réponse à cette fonction sur l'ordi W7 est "XP ou Moins"
    Comme je m'y attendais un peu d'ailleurs :-)

    Moi ce qui m'inquiète le plus c'est que lorsque j'interroge par code la base de registres je ne tombe pas sur la bonne !

    En fait la raison de tout cela est que je suis en train de m'amuser à écrire un programme de gestion d'images pour pas mal de gens que je connais et qui s'en sortent très mal... et donc me demandent comment faire ceci ou cela...

    Une sorte de ACDSEE + Photoshop pour les nuls...
    Depuis que je suis à la retraite je me suis passionné pour le traitement des images car si j'ai "écrit des monstres" pour la gestion de commerces notamment , je n'avais jamais eu l'occasion de travailler sur les images.

    Dans ce prog,j'ai un outil pour naviguer dans les images zoomées.
    Or sous W7 cet outil ne semble pas etre très bon dans sa version actuelle car il ralentit pas mal tout traitement.
    Je voulais donc simplement ne pas l'activer lorsque l'user était sous W7, me réservant de faire mieux si j'arrivais à le corriger pour qu'il soit plus efficace.

  19. #19
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Probleme identique...
    http://borland.newsgroups.archived.a...702191685.html

    Un update à Delphi 7 manquant (s'il existe, je m'en souvient plus) ?
    Un patch de compatibilite a mettre ?
    http://www.developpez.net/forums/d72...7-windows-7-a/

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Les liens que tu donnes Eric amènent effectivement sur des questions identiques aux miennes mais apparamment y'a pas de réponse ou de solution avec...
    Alors come je ne suis pas un familier des us et coutumes du forum je ne comprends pas trop la raison de ces références...
    J'espère n'avoir rien fait de travers !
    Avant de poser ma question j'avais fait des recherches dansle forum et n'avais posé ma question que parceque je n'avais rien trouvé.

    En ce qui me concerne Mode compatible XP ou pas le résultat est identique.

    Pour ce qui est de l'install de Delhi 7 sous Windows 7 je n'ai perso rencontré aucun problème. Depuis bien longtemps ( même avant XP ) j'avais pris l'habitude de ne jamais rien installer dans "Program files".
    Le peu que j'avais lu sur W7 m'a conforté à ne surtout pas changer ces habitudes...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56
  2. [Choix] Quel SGBD avec delphi et kylix
    Par djmcg dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 16/01/2003, 12h24
  3. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 19h03
  4. Réponses: 5
    Dernier message: 08/07/2002, 16h22
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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