Bonjour,
J'aimerais créer plusieurs 'set of string' dynamiquement lors du run time.
Qui peut me mettre sur la piste?
Merci d'avance,
Phil.
Bonjour,
J'aimerais créer plusieurs 'set of string' dynamiquement lors du run time.
Qui peut me mettre sur la piste?
Merci d'avance,
Phil.
Set of string: variable de type ensemble que je créerais dynamiquement en la nommant puis en la remplissant à partir de chaines.
N'en connaissant pas le nombre à l'avance je cherche à les créer au runtime.
Merci d'avance
Phil.
Un ensemble ne peut contenir que des valeurs ordinales.
Pour des chaînes, ce serait un tableau, array of string, puis IndexStr pour trouver l'index.
je ne vois pas bien ce que tu comptes faire de cela...
sauf à convertir un TStringList en entier...je m'explique
NB: le code a été saisi en ligne sans vérification
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 function StringsAsInteger(Values, SetOf: TStrings): Integer; var Index: Integer; Value: Integer; begin Result := 0; for Index := 0 to Values.Count - 1 do begin Value := SetOf.IndexOf(Values[Index]); if Value >= 0 then Result := Result or (1 shl Value); end; end; procedure IntegerAsSrings(Value: Integer; SetOf, Values: TStrings); begin for Index := 0 to SetOf.Count - 1 do begin if Value and (1 shl Index) > 0 then Values.Add(SetOf[Index]); end; end; var SetOf: TStringList; Values: TStringList; Value: Integer; begin // liste de valeurs possibles SetOf := TStringList.Create; SetOf.Add('Un'); // 1 SetOf.Add('Deux'); // 2 SetOf.Add('Trois'); // 4 // des valeurs Value := TStringList.Create; Value.Add('Trois'); Value.Add('Cinq'); // sera ignoré // en entier ça devrait donner 4 Value := StringsAsInteger(Values, SetOf); // conversion inverse Values.Clear; IntegerAsString(Value, SetOf, Values); // Values devrait contenir "Trois" end;![]()
Tu peux aussi imaginer un seul TStringList pour héberger les chaînes et tester si déjà présente dans la liste (IndexOf), et créer des ensembles d'entiers représentant leurs index dans cette liste.
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Dans une liste triée il est aussi possible d'utiliser la propriété Duplicates.
Partager