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