Les Défis DELPHI - Générez de jolis fichiers ASCII !

Équipe Delphi

Le 6e défi proposé par l'équipe Delphi est la création d'une application qui, à partir d'un texte en entrée, d'une police de caractères, d'une largeur et d'une hauteur saura générer un art ASCII dans un fichier texte.

L'art ASCII consiste à réaliser des images uniquement à l'aide des lettres et caractères spéciaux contenus dans le code ASCII (1).

- Titre : Les Défis DELPHI - Générez de jolis fichiers ASCII !

- Auteur : Équipe Delphi

- Parution : 1 février 2008

- Mise à jour : 21 avril 2013

- Public visé :

- Licence : Copyright ® 2008 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Sujet du défi

- I-A. Prérequis

- I-B. Les objectifs du défi

I - Sujet du défi

Le 6e défi proposé par l'équipe Delphi est la création d'une application qui, à partir d'un texte en entrée, d'une police de caractères, d'une largeur et d'une hauteur saura générer un art ASCII dans un fichier texte.

L'utilisateur devra saisir un texte avec la police de caractères de son choix.

L'utilisateur devra également spécifier le nombre de caractères utilisés pour la largeur et la hauteur de l'art ASCII que l'application va lui générer.

L'application devra être capable de générer un fichier ASCII dessinant le texte saisi par l'utilisateur avec sa police de caractères utilisée.

Le fichier généré ne pourra utiliser que des caractères ASCII non étendus et supérieurs ou égaux à 32. La police de caractères utilisée pour visualiser les fichiers générés est :

Police de caractères

Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
Font.Style = []

Le fichier généré possèdera le nombre de caractères saisi pour la largeur et pour la hauteur par l'utilisateur.

Et comme rien ne vaut un exemple… Imaginons celui-ci :

Exemple en art ASCII / deux polices différentes / largeur 80 caractères / hauteur 25 caractères

PPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZ  DELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELP
COMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMD  HIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDE
ELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPH  VELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELO
IDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDE  VELOPPEZCOMDELPHID  PPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZ
EVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVE  LOPPEZCOMDELPHIDEV  COMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMD
ELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELO  PPEZCOMDELPHIDEVEL  ELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPH
OPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPP  EZCOMDELPHIDEVELOP  IDEVE         L          O        P     PEZCOM D             ELPH         IDEVEL
PEZCOMDEL      PHI   DE   VE       LO   P        P       EZC  OMD      ELPHIDEVE  OPPEZCO       MD   EL  PHID       E     VEL    OPP   E   Z  COMDELP       HIDEVE
LOPPEZCO        MD   E    LP        H            I        DE  VE        LOPPEZCO  LOPPEZC   OM  DE   LP  HIDE   VE  LO    PPE    ZCO   MD     ELPHIDE   VE  LOPPEZ
MDELPHID        EV        EL        O            P        PE  ZC        OMDELPHI  COMDELP     HIDEV     ELOPP     EZCO     M    DELP   HI     DEVELOP     PEZCOMDE
DEVELOP         PEZ      CO    M    D            E   L    PH  I         DEVELOPP  LPHIDEV     ELOPPE    ZCOMD     ELPH     I    DEVE   L      OPPEZCO     MDELPHID
EZCOMDE         LPHI    DEV         E   LO  PP   E  ZCO   MD  E         LPHIDEVE  EVELOPP      EZCOMD  ELPHID      EVE          LOPP       E  ZCOMDEL     PHIDEVEL
LOPPEZC       OMDELP    HID       EVE   LO  PP   E  ZCO   MD  E       LPHIDEVELO  OPPEZCO      MDELP    HIDEV      ELO  P       PEZC     OMD  ELPHIDE     VELOPPEZ
PPEZCOM     DELPHID     EVE     LOPPE   ZC  OM   D  ELP   HI  D     EVELOPPEZCOM  COMDELP      HIDE     VELOP      PEZ  CO   MD ELPH   IDEVE  LOP  PE     ZCOMDELP
DELPHID    EV   EL       OP   PEZ   C   OM  DE   L   P    HI  D    EV   ELOPPEZC  HIDEVEL   OPP EZC      OMDE   LPH     ID   EV ELOP   PEZCO  MDE  LP   HI  DEVELO
OMDELPH         I         D         E   VE  LO   P        PE  Z         COMDELPH  PPEZCOM    DE  L   PH  IDEV     E         LOP  PEZ   COMDE       LP    H   IDEVE
IDEVELOPP      EZ   COM   DE       LP   HI  DE   V      ELOP  PEZ      COMDELPHI  LOPPE                                   Z CO           MD                  ELPHI
DEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCO  MDELPHIDEVELOPPEZCOMDELPHIDE  DEVEL                              OPPEZCOMD           EL       P          HIDEV
VELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMD  ELPHIDEVELOPPEZCOMDELPHIDEVE  ELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOP
LOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDEL  PHIDEVELOPPEZCOMDELPHIDEVELO  PEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZC
PPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPH  IDEVELOPPEZCOMDELPHIDEVELOPP  OMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDE
EZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHID  EVELOPPEZCOMDELPHIDEVELOPPEZ  LPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHI
HIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDE  LOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPP
DELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELP  DEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVE
VELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELO  EZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCOMDELPHIDEVELOPPEZCO

I-A - Prérequis

Pour réaliser ce défi, une simple édition personnelle de Delphi suffit. Pas besoin d'avoir les bibliothèques spécifiques aux versions Pro/Entreprise/Architecte !
Certaines versions personnelles de DELPHI sont disponibles au téléchargement sur Developpez.com.

Il peut être nécessaire de savoir farfouiller dans la rubrique DELPHI et plus particulièrement dans :

- la F.A.Q. DELPHI ;

- les Sources DELPHI ;

- les tutoriels DELPHI ;

- les forums DELPHI.

I-B - Les objectifs du défi

Le logiciel doit comporter les éléments suivants :

1. créer l'interface utilisateur de l'application ;

2. respecter le sujet du défi :

1. l'utilisateur devra saisir un texte avec la police de caractères de son choix,

2. l'utilisateur devra également spécifier le nombre de caractères utilisés pour la largeur et la hauteur de l'art ASCII que l'application va lui générer,

3. l'application devra être capable de générer un fichier ASCII dessinant le texte saisi par l'utilisateur avec sa police de caractères utilisée,

4. le fichier généré ne pourra utiliser que des caractères ASCII non étendus et supérieurs ou égaux à 32. La police de caractères utilisée pour visualiser les fichiers générés est :

Police de caractères

Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Courier New'
Font.Style = []

3. Laissez libre cours à votre imagination et proposez vos propres fonctionnalités.

Les participants doivent respecter les règles du défi et le déroulement du défi, et plus précisément que « l'utilisation de composantes ou bibliothèques autres que celles fournies en standard par Borland sont interdites, qu'elles soient commerciales, freewares, open source, etc. »

(1)Extrait de Wikipedia.