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 :

Tableau de chaines à 2 dimensions


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut Tableau de chaines à 2 dimensions
    est-ce que le code ci-dessous est correct ? Peut on l'optimiser un peu ?

    Lorsque je met "for i := 1 to 16" ca fonctionne mais pas lorsque
    i := 1 to 17 qui me renvoie toujours "version inconnue !" et je ne comprends pas pourquoi ?

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    function GetIEVersion: string;
    var
      Reg: TRegistry;
      str: string;
      res: boolean;
      i  : short;
      IEVersion: array [1..18, 1..18] of String;
     
    begin
    // Extraire le numéro de version :
    IEVersion[1, 1]  := ('5.00.2014.0216');   //Windows 95/98/NT
    IEVersion[1, 2]  := ('5.0');
    IEVersion[2, 1]  := ('5.00.2314.1003');   //Office 2000
    IEVersion[2, 2]  := ('5.0');
    IEVersion[3, 1]  := ('5.00.2614.3500');   //Windows 98 Seconde Edition
    IEVersion[3, 2]  := ('5.0');
    IEVersion[4, 1]  := ('5.00.2919.6307');   //avec SP1
    IEVersion[4, 2]  := ('5.01');
    IEVersion[5, 1]  := ('5.00.2920.0000 ');  //Windows 2000
    IEVersion[5, 2]  := ('5.01');
    IEVersion[6, 1]  := ('5.00.3103.1000');   //Win 2000 + SP1
    IEVersion[6, 2]  := ('5.01');
    IEVersion[7, 1]  := ('5.00.3105.0106');   //Win 95/98/NT avec SP1
    IEVersion[7, 2]  := ('5.01');
    IEVersion[8, 1]  := ('5.00.3314.2101');   //Win 95/98/NT avec SP2
    IEVersion[8, 2]  := ('5.01');
    IEVersion[9, 1]  := ('5.00.3315.1000');   //Win 2000 avec SP2
    IEVersion[9, 2]  := ('5.01');
    IEVersion[10, 1] := ('5.50.4134.0600');   //95/98/ME/NT/2000
    IEVersion[10, 2] := ('5.5');
    IEVersion[11, 1] := ('5.50.4522.1800');   // Idem avec SP1
    IEVersion[11, 2] := ('5.5');
    IEVersion[12, 1] := ('5.50.4807.2300');   // Idem avec SP2
    IEVersion[12, 2] := ('5.5');
    IEVersion[13, 1] := ('6.0.2600.0000');    //Win 98/NT/2000/ME/XP
    IEVersion[13, 2] := ('6.0');
    IEVersion[14, 1] := ('6.0.2800.1106');    //Idem avec SP1
    IEVersion[14, 2] := ('6.0');
    IEVersion[15, 1] := ('6.0.2900.2180');    //Win XP avec SP2
    IEVersion[15, 2] := ('6.0');
    IEVersion[16, 1] := ('7.0.5730.11');      //Windows XP Home/Pro
    IEVersion[16, 2] := ('7.0');
    IEVersion[17, 1] := ('7.0.6000.16386');   //Windows Vista
    IEVersion[17, 2] := ('7.0 - Vista');
     
    str:='';
    res:=false;
     
    Reg := TRegistry.Create;
    try
     Reg.RootKey := HKEY_LOCAL_MACHINE;
     if Reg.OpenKey('\Software\Microsoft\Internet Explorer', False) then begin
      res:=true;
      str:=Reg.ReadString('Version');
     end;
    finally
     Reg.CloseKey;
     Reg.Free;
    end;
     
    if res then begin
      For i := 1 to 16 do begin   //i=17 => Version inconnue !!!!
        if IEVersion[i,1] = str then
          result := IEVersion[i,1] + ' (' + 'IE ' + IEVersion[i,2] + ')'
        else
          result := 'Version inconnue !'
        end;
    end;
    end;

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je chercherais personnellement à compacter tout cela

    1) lire la chaine dans le register
    2) décomposer en 4 entiers a,b,c,d
    3) tester la version en fonction des valeurs trouvées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     case a of
      5: case b of
            0: if c>2919 then Result:='5.01' else Result:='5.0';
           50: Result:='5.5'; 
          else Result:='5.?';
          end;
      ...
     end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    votre méthode est déconseillé et n'est pas persistante il suffit avoir d'autres nouvelles version IE est votre fonction devient obsolète.

    vous avez la solution dans la FAQ

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut
    Merci Paul, après analyse ca se tiens !!!

    Tu as une soluce pour extraire simplement les 4 parties a, b, c, d ?

    Merci,

    Denis

  5. #5
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    bonjour,

    pour ton code, outre le fait que effectivement ce ne soit pas la bonne solution), il me semble qu'il ne renvoi autre chose que 'Version inconnue' que si la version lue est égale à la dernière version de ta table (dans ton cas tu dois tester sur un XP Hom/Pro, non ?).

    @++
    Dany

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par secretman
    Merci Paul, après analyse ca se tiens !!!

    Tu as une soluce pour extraire simplement les 4 parties a, b, c, d ?

    Merci,

    Denis

    quick & dirty !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Val(s,a,e);
    Delete(s,1,e);
    Val(s,b,e);
    Delete(s,1,e);
    Val(s,c,e);
    Delete(s,1,e);
    Val(s,d,e);
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut
    oui effectivement sur un XP Home. Bien vu l'artiste !

    Cependant j'ai le m^me problème avec DirectX

    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
    61
    62
    63
    64
    65
    66
    67
     
    Function GetDirectXVersion : string;
    var
    Reg: TRegistry;
    str: string;
    res: boolean;
    i  : short;
    DXVersion: array [1..20, 1..2] of String;
     
    begin
    // Extraire le numéro de version :
    // http://es.wikipedia.org/wiki/DirectX
    DXVersion[1, 1]  := ('4.02.0095');
    DXVersion[1, 2]  := ('1.0');
    DXVersion[2, 1]  := ('4.03.00.1096');
    DXVersion[2, 2]  := ('2.0');
    DXVersion[3, 1]  := ('4.04.0068');
    DXVersion[3, 2]  := ('3.0');
    DXVersion[4, 1]  := ('4.04.0070');
    DXVersion[4, 2]  := ('3.0a');
    DXVersion[5, 1]  := ('4.05.00.0155');
    DXVersion[5, 2]  := ('5.0');
    DXVersion[6, 1]  := ('4.05.01.1600');  //Win 95
    DXVersion[6, 2]  := ('5.2');
    DXVersion[7, 1]  := ('4.05.01.1998');  //Win 98
    DXVersion[7, 2]  := ('5.2');
    DXVersion[8, 1]  := ('4.06.00.0318');
    DXVersion[8, 2]  := ('6.0');           //Win CE (DreamCast)
    DXVersion[9, 1]  := ('4.06.02.0436');
    DXVersion[9, 2]  := ('6.1');
    DXVersion[10, 1] := ('4.07.00.0700');  //Win 2000
    DXVersion[10, 2] := ('7.0');
    DXVersion[11, 1] := ('4.07.00.0716');
    DXVersion[11, 2] := ('7.0a');
    DXVersion[12, 1] := ('4.07.01.3000');  //Win Me
    DXVersion[12, 2] := ('7.1');
    DXVersion[13, 1] := ('4.08.00.0400');  //XBox
    DXVersion[13, 2] := ('8.0');           //et 8.0a
    DXVersion[14, 1] := ('4.08.01.0810');  //Win XP
    DXVersion[14, 2] := ('8.1');
    DXVersion[15, 1] := ('4.08.01.0881');
    DXVersion[15, 2] := ('8.1');
    DXVersion[16, 1] := ('4.09.00.0900');  //Windows Server 2003
    DXVersion[16, 2] := ('9.0');
    DXVersion[17, 1] := ('4.09.00.0901');
    DXVersion[17, 2] := ('9.0a');
    DXVersion[18, 1] := ('4.09.00.0902');
    DXVersion[18, 2] := ('9.0b');
    DXVersion[19, 1] := ('4.09.00.0904');  //Windows XP et Vista
    DXVersion[19, 2] := ('9.0c');
    //DXVersion[20, 1] := ('???');
    //DXVersion[20, 2] := ('10.0');        //Windows Vista
     
    str:='';
    res:=false;
     
    Reg := TRegistry.Create;
    try
     Reg.RootKey := HKEY_LOCAL_MACHINE;
     if Reg.OpenKey('\Software\Microsoft\DirectX', False) then begin
      res:=true;
      str:=Reg.ReadString('Version');
     end;
    finally
     Reg.CloseKey;
     Reg.Free;
    end;
    Denis

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par secretman
    oui effectivement sur un XP Home. Bien vu l'artiste !

    Cependant j'ai le m^me problème avec DirectX
    même problème, même punition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     case a*100+b of
      402 : Result:='1.0';
      403 : Result:='2.0';
      404 : if c>=70 then Result:='3.0a' else Result:='3.0';
      ...  
     end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/05/2007, 15h10
  2. Réponses: 7
    Dernier message: 01/12/2006, 21h28
  3. tableau de chaine
    Par florantine dans le forum C++
    Réponses: 1
    Dernier message: 18/01/2006, 15h17
  4. Réponses: 11
    Dernier message: 31/12/2005, 13h00
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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