Description du format de fichier .CTL et des structures de donées:
fichier FileFormat.txt (présent dans le répertoire d'installation de WinCocktail)

---------------------------------
Description du format de fichier CTL (CockTaiL)
---------------------------------

Offset    Taille    Type     Description
(decimal) (decimal)
** Entete **
0         4         integer  Nombre de recettes dans le fichier. Peut etre ignoré, mais peut
                             servir a afficher une progressbar. 
** 1er Bloc de données **
4         4         integer  Taille de l'enregistrement ( tjrs >= à 98) ->RecLen
8         1         byte     Longueur de la chaine représentant le nom
                             de la recette. Peut etre ignoré
9         30        str_azt  Nom de la recette, fini par \0
39        4         integer  Id de la recette. Peut etre le numero d'ordre
                             ou un numero unique
43        1         byte     Mélangeur
44        1         byte     Verre
45        1         byte     Cout
46        1         sbyte    Nombre de personne
47        1         byte     Gout
48        1         byte     Alcool
49        1         byte     temperature
50        1         bytebool Avec des bulles
51        4         sinteger Couleur 1
55        4         sinteger Couleur 2
59        1         byte     Longeur de la chaine representant le nom de l'auteur
                             de la recette. Peut etre ignoré
60        30        str_azt  Nom de l'auteur de la recette, fini par \0
90        4         pointer  Adresse de la chaine Photo. Doit être ignoré 
94        4         pointer  Adresse de la chaine Video. Doit être ignoré 
98        4         pointer  adresse de la chaine Ingredients. Doit être ignoré 
102       4         pointer  Adresse de la chaine recette. Doit être ignoré. 
106       >=1       str_azt  Chaine représentant la photo. Fini par \0
          >=1    str_azt  Chaine représentant la video. Fini par \0
          >=1    str_azt  Chaine représentant les ingrédients. Fini par \0
          >=1    str_azt  Chaine représentant la recette. Fini par \0
** 1er Bloc de données **
=4+RecLen 4      integer  Taille de l'enregistrement ( tjrs >= à 98)
  ...etc...

Pour lire les données, il ne faut pas lire un record directement, car
la taille de la structure varie en fonctions des chaines de caractère.
Il faut mieux lire tout d'abord le bloc fixe (ofset 4 à 90 en ignorant les 4
pointeurs) puis sauter 16 octets et lire les chaînes AZT.

Pour lire ou écrire dans un fichier .CTL, on peut s'inspirer
des unitées : 
  C_Cocktail et la class TListCocktail qui implémente la lecture et l'écriture.
  U_Cocktail et les structures de données
  U_CocktailConst et les constantes (d'erreurs, de chaines)
  U_Func et les fonctions génériques
  C_LinearMemory qui implémente la class TWriteLinearMemory et TReadLinearMemory


---------------------------------
------ Structure de donnée ------
---------------------------------

---------------------------------
Langage C
---------------------------------
typedef enum TagCocktailMelangeur
{
    melShaker,
    melVerreAMelange,
    melElectrique,
    melDirectVerre,
    melCuisson,
    melAutre
} TCocktailMelangeur;

typedef enum TagCocktailVerre
{
    verreCocktail,
    verreTumbler,
    verreOldFashioned,
    verreFlute,
    verreCoupe,
    verrePilsener,
    verreBallon,
    verreTulipe,
    verreChaleur,
    verreDegustation,
    verreFizz,
    verreAutre
} TCocktailVerre

typedef enum TagCocktailCout
{
    coutPeu,
    coutRaisonnable,
    coutCher
} TCocktailCout;

typedef enum TagCocktailGout
{
    goutBeurk,
    goutBof,
    goutMouais,
    goutMmm,
    goutSlurp,
    goutIndefini
} TCocktailGout;

typedef enum TagCocktailAlcool
{
    alcoolSans,
    alcoolLeger,
    alcoolDur,
    alcoolTresDur,
    alcoolAie
} TCocktailAlcool;

typedef enum TagCocktailTemperature
{
    tempGelee,
    tempFroid,
    tempChambre,
    tempChaud,
    tempBrulant
} TCocktailTemperature;

typedef struct tagCocktailRecette { // PACKED
        BYTE                  NameLen;
        char                  Nom[30];
        int                   ID;
        TCocktailMelangeur    Melangeur;
        TCocktailVerre        Verre;
        TCocktailCout         Cout;
        signed char           NbPersonne;
        TCocktailGout         Gout;
        TCocktailAlcool       Alcool;
        TCocktailTemperature  Temperature
        BYTEBOOL              Bulle;
        signed int            Couleur1;
        signed int            Couleur2;
        BYTE                  AuteurLen;
        char                  Auteur[30];
        char                  *Photo;
        char                  *Video;
        char                  *Ingredients;
        char                  *Recette;
} TCocktailRecette;

---------------------------------
Langage Pascal
---------------------------------
  TCocktailMelangeur = (melShaker,
                        melVerreAMelange,
                        melElectrique,
                        melDirectVerre,
                        melCuisson,
                        melAutre);
  TCocktailVerre = (verreCocktail,
                    verreTumbler,
                    verreOldFashioned,
                    verreFlute,
                    verreCoupe,
                    verrePilsener,
                    verreBallon,
                    verreTulipe,
                    verreChaleur,
                    verreDegustation,
                    verreFizz,
                    verreAutre);
  TCocktailCout = (coutPeu,
                   coutRaisonnable,
                   coutCher);
  TCocktailGout    = (goutBeurk,
                      goutBof,
                      goutMouais,
                      goutMmm,
                      goutSlurp,
                      goutIndefini);
  TCocktailAlcool = (alcoolSans,
                     alcoolLeger,
                     alcoolDur,
                     alcoolTresDur,
                     alcoolAie);
  TCocktailTemperature = ( tempGelee,
                           tempFroid,
                           tempChambre,
                           tempChaud,
                           tempBrulant);

  TCocktailRecette = packed record
    Nom              : string[30];
    Id               : integer;
    Melangeur        : TCocktailMelangeur;
    Verre            : TCocktailVerre;
    Cout             : TCocktailCout;
    NbPersonne       : shortint;
    Gout             : TCocktailGout;
    Alcool           : TCocktailAlcool;
    Temperature      : TCocktailTemperature;
    Bulle            : Boolean;
    Couleur1         : integer;
    Couleur2         : integer;
    Auteur           : string[30];
    Photo            : string;
    Video            : string;
    Ingredients      : string;
    Recette          : string;
  end;