Sign in Join
Wiki copytemporary

Enum Type/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Enum Type/fr

OldNewLine
1+\
2+Plage de valeurs:\
3+Celle d'un Longword.\
4+Besoins en mémoire:\
5+par défaut, un énuméré est stocké dans un Longword et nécessite 4 octets. Mais en fonction de la bascule {\$PACKENUM x} (abrégée {\$Zx}) et de la plage de valeur du type de données, elle peut être ajustée.
6+
7+<table>
8+<caption>Occupation en mémoire</caption>
9+<tbody>
10+<tr>
11+<td>Valeur maximale de l'énuméré</td>
12+<td>&lt;= 255</td>
13+<td>&lt;= 65535</td>
14+<td>&gt; 65535</td>
15+</tr>
16+<tr>
17+<td>aucune bascule ou {$PACKENUM DEFAULT}<br />
18+ou {$PACKENUM 4} ou {$Z4}</td>
19+<td>4</td>
20+<td>4</td>
21+<td>4</td>
22+</tr>
23+<tr>
24+<td>{$PACKENUM 2} ou {$Z2}</td>
25+<td>2</td>
26+<td>2</td>
27+<td>4</td>
28+</tr>
29+<tr>
30+<td>{$PACKENUM 1} ou {$Z1}</td>
31+<td>1</td>
32+<td>2</td>
33+<td>4</td>
34+</tr>
35+</tbody>
36+</table>
37+
38+On note immédiatement que, par défaut, le compilateur ne cherche pas à optimiser l'occupation mémoire.\
39+Propriétés:\
40+Les données de type **Enum type** sont une énumération d'entiers non signés constantes.\
41+Par défaut, la valeur d'une des constantes énumérées est égale à celle de la précédente augmentée de 1, la première vaut 0.
42+
43+``` pascal
44+Type
45+ {$PACKENUM 2}
46+ LargeEnum = (Null, Eins, Zwei);
47+```
48+
49+Il est possible de donner une autre valeur à l'une des constantes, les suivantes poursuivent alors l'incrémentation à partir de cette valeur.
50+
51+``` pascal
52+Type
53+ {$PACKENUM 4}
54+ SmallEnum = (Sechs := 6, Sieben, Acht);
55+```
56+
57+\
58+
59+``` pascal
60+Type
61+ {$PACKENUM 1}
62+ MiddleEnum = (Null, Zehn := 10, Elf, Zwoelf);
63+```
64+
65+> **Warning:** Dans une telle énumération, l'emploi de Succ et Pred n'est plus permis, le compilateur signale une erreur.
66+
67+Exemples d'affectation de valeurs du type Enum:
68+
69+``` pascal
70+Var
71+ S : SmallEnum;
72+ M : MiddleEnum;
73+ L : LargeEnum;
74+```
75+
76+Exemples de conversion d'Enum en autre de type de donnée:
77+
78+``` pascal
79+ Application.MessageBox(PChar(IntToStr(Qword(Ord(Sechs)))),'Konvertierung',MB_OK);
80+ Application.MessageBox(PChar(IntToStr(Qword(Ord(S.Sechs)))),'Konvertierung',MB_OK);
81+```
82+
83+---
84+*From the Free Pascal wiki, page "Enum Type/fr", as it stood on 2020-02-14 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history