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

API, COM et SDKs Delphi Discussion :

EnumSystemLocales


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 79
    Par défaut EnumSystemLocales
    Bonjour,

    je souhaiterai avoir la liste complète des pays présent dans Windows, j'ai trouvé sur internet comment faire en utilisant la fonction EnumSystemLocales et les fonctions de call back. Seulement ça ne me renvoie qu'une seule occurence.
    J'ai beau chercher, je ne comprend pas.

    Voici le code utilisé trouvé sur le net :
    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;
     
    type
    TForm1 = class(TForm)
        Button1: TButton;
        LocaleList: TListBox;
    procedure Button1Click(Sender: TObject);
    private
    { Déclarations privées }
    public
    { Déclarations publiques }
    end;
     
    var
    Form1: TForm1;
     
    implementation
     
    {$R *.DFM}
     
    function GetLocaleData(ID: LCID; Flag: DWORD): string;
    var
    BufSize: Integer;
    begin
    BufSize := GetLocaleInfo(ID, Flag, nil, 0);
    SetLength(Result, BufSize);
    GetLocaleinfo(ID, Flag, PChar(Result), BufSize);
    SetLength(Result, BufSize - 1);
    end;
     
    { Appelé pour chaque localisation supportée }
     
    function LocalesCallback(Name: PChar): Bool; stdcall;
    var
    LCID: Integer;
    begin
    LCID := StrToInt('$' + Copy(Name, 5, 4));
    Form1.LocaleList.Items.Add(GetLocaleData(LCID, LOCALE_SABBREVLANGNAME));
    Result := Bool(1);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    EnumSystemLocales(@LocalesCallback, LCID_SUPPORTED);
     
    end;
     
    end.
    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 79
    Par défaut
    En cherchant sur google (forum anglais) j'ai vu que le retour de la fonction Call back ne devait pas être un boolean mais un entier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function LocalesCallback(Name: PChar): Integer; stdcall; 
    var 
    LCID: Integer; 
    begin 
    LCID := StrToInt('$' + Copy(Name, 5, 4)); 
    Form1.LocaleList.Items.Add(GetLocaleData(LCID, LOCALE_SABBREVLANGNAME)); 
    Result := 1; 
    end;
    Dès ce moment tous les pays apparaissent ...

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

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