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 :

[Inno Setup] La différence entre une version ANSI et UNICODE


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 12
    Points
    12
    Par défaut [Inno Setup] La différence entre une version ANSI et UNICODE
    Bonjour à tous !

    Il y a de cela quelques semaines, je cherchais comment récupérer la liste des IPs locales (IPv4) d'une machine sur laquelle j'effectue mon installation. Après quelques recherches sur google j'ai vite trouvé qu'il était possible de faire cela en utilisant une DLL proposé par l'api win32. Je suis tombé sur la discussion suivante : http://stackoverflow.com/questions/6...ing-inno-setup

    Et donc sur le code suivant :

    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
     
    const
     ERROR_INSUFFICIENT_BUFFER = 122;
     
     
    function GetIpAddrTable( pIpAddrTable: Array of Byte;
      var pdwSize: Cardinal; bOrder: WordBool ): DWORD;
    external 'GetIpAddrTable@IpHlpApi.dll stdcall';
     
     
    procedure GetIpAddresses(Addresses : TStringList);
    var 
     Size : Cardinal;
     Buffer : Array of Byte;
     IpAddr : String;
     AddrCount : Integer;
     I, J : Integer;
    begin
      // Find Size
      if GetIpAddrTable(Buffer,Size,False) = ERROR_INSUFFICIENT_BUFFER then
      begin
         // Allocate Buffer with large enough size
         SetLength(Buffer,Size);
         // Get List of IP Addresses into Buffer
         if GetIpAddrTable(Buffer,Size,True) = 0 then
         begin
           // Find out how many addresses will be returned.
           AddrCount := (Buffer[1] * 256) + Buffer[0];
           // Loop through addresses.
           For I := 0 to AddrCount -1 do
           begin
             IpAddr := '';
             // Loop through each byte of the address
             For J := 0 to 3 do
             begin
               if J > 0 then
                 IpAddr := IpAddr + '.';
               // Navigagte through record structure to find correct byte of Addr
               IpAddr := IpAddr + IntToStr(Buffer[I*24+J+4]);
             end;
             Addresses.Add(IpAddr);
           end;
         end;
      end;
    end;
     
    function InitializeSetup(): Boolean;
    var
     SL : TStringList;
    begin
      SL := TStringList.Create;
      GetIpAddresses(SL);
      MsgBox(SL.Text, mbInformation, MB_OK);
      SL.Free;
    end;
    proposé par Robert Love (merci à lui au passage car il m'a bien aidé)

    Cependant, je me suis rendu compte que ce code ne fonctionnait pas sous la version d'Inno Setup 5.5.9 (a), donc une version ansi. En effet, on obtient l'erreur suivante : "Unknown type 'WordBool'".
    Pour régler le problème il suffit de passer sous une version Inno Setup 5.5.9 (u), donc une version unicode.

    Et là ma grande question c'est pourquoi cela fonctionne avec une version unicode et pas une fonctionne ansi ? D'où vient la différence ? Qu'est-ce qui fait que 'Wordbool' est définit dans une version unicode, mais pas dans une version ansi ?

    C'est peut-être bête comme question, mais je suis bien curieux de savoir pourquoi.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Personne n'a sa petite idée ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    La version ANSI ne repose sans doute pas sur la même version de RemObjects Pascal Script que l'Unicode et ce type n'était manifestement pas encore défini.

    La version ANSI étant toujours compilée en Delphi 2 et 3, ceci explique peut-être cela.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    D'accord, je comprend mieux. Merci pour ta réponse !

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

Discussions similaires

  1. différences entre 2 versions d'une vue ClearCase
    Par Tanebisse dans le forum SCM
    Réponses: 0
    Dernier message: 15/09/2011, 11h46
  2. Différence entre une version 8i et une 10G
    Par psyche dans le forum Oracle
    Réponses: 3
    Dernier message: 07/04/2006, 10h44
  3. [JBoss]Différence entre une DataSource et une XADataSource ?
    Par lalakers dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 03/10/2005, 11h18
  4. Réponses: 2
    Dernier message: 25/05/2005, 21h34
  5. Réponses: 7
    Dernier message: 04/03/2004, 13h32

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