Sign in Join
Wiki copytemporary

Revision 1 of 4, by Trev on 2-14-2020. The page as it is now.

Enum Type/fr


Plage de valeurs:
Celle d'un Longword.
Besoins en mémoire:
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.

<table> <caption>Occupation en mémoire</caption> <tbody> <tr> <td>Valeur maximale de l'énuméré</td> <td><= 255</td> <td><= 65535</td> <td>> 65535</td> </tr> <tr> <td>aucune bascule ou {$PACKENUM DEFAULT}<br /> ou {$PACKENUM 4} ou {$Z4}</td> <td>4</td> <td>4</td> <td>4</td> </tr> <tr> <td>{$PACKENUM 2} ou {$Z2}</td> <td>2</td> <td>2</td> <td>4</td> </tr> <tr> <td>{$PACKENUM 1} ou {$Z1}</td> <td>1</td> <td>2</td> <td>4</td> </tr> </tbody> </table>

On note immédiatement que, par défaut, le compilateur ne cherche pas à optimiser l'occupation mémoire.
Propriétés:
Les données de type Enum type sont une énumération d'entiers non signés constantes.
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.

pascal
Type
  {$PACKENUM 2}
  LargeEnum = (Null, Eins, Zwei);

Il est possible de donner une autre valeur à l'une des constantes, les suivantes poursuivent alors l'incrémentation à partir de cette valeur.

pascal
Type
  {$PACKENUM 4}
  SmallEnum = (Sechs := 6, Sieben, Acht);

\

pascal
Type
  {$PACKENUM 1}
  MiddleEnum = (Null, Zehn := 10, Elf, Zwoelf);

Warning: Dans une telle énumération, l'emploi de Succ et Pred n'est plus permis, le compilateur signale une erreur.

Exemples d'affectation de valeurs du type Enum:

pascal
Var 
  S : SmallEnum;
  M : MiddleEnum;
  L : LargeEnum;

Exemples de conversion d'Enum en autre de type de donnée:

pascal
  Application.MessageBox(PChar(IntToStr(Qword(Ord(Sechs)))),'Konvertierung',MB_OK);
  Application.MessageBox(PChar(IntToStr(Qword(Ord(S.Sechs)))),'Konvertierung',MB_OK);

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.