IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Fonctions de l'unité Crt pour Delphi XE2


Sujet :

API, COM et SDKs Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut Fonctions de l'unité Crt pour Delphi XE2
    Bonjour !

    J'ai longtemps cherché une unité Crt pour Delphi XE2 : je ne l'ai jamais trouvée. Apparemment ça n'intéresse plus personne, ce que je peux comprendre.

    Mais c'est quand même dommage, non ?

    Pourquoi ne l'écris-tu pas toi-même ?
    Eh bien justement j'y pense mais en attendant je me suis amusé, à partir de morceaux de code pris çà et (tous basés sur l'unité Windows), je me suis fabriqué une unité offrant les fonctions basiques de l'unité Crt : effacer l'écran, choisir la couleur des caractères, placer le curseur à tel endroit. J'ai eu la bonne surprise de voir tous les morceaux se compiler et fonctionner parfaitement, non seulement avec XE2, mais aussi avec FreePascal et Delphi 6 !

    Je vous présente donc le code que j'ai écrit ou plutôt collé, et je propose le sujet suivant : une unité Crt compatible avec les dernières versions de Delphi.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut Unité Console de Rudy Velthuis
    En continuant mes recherches, je suis tombé sur l'unité Console de Rudy Velthuis, qui reprend toutes les fonctions de la Crt. Je l'ai testée avec XE2 : ça marche !

    L'auteur précise qu'il a testé l'unité avec Delphi 5 et Delphi 2006.

    J'en conclus qu'elle doit être compatible avec toutes les versions intermédiaires, et peut-être aussi avec FreePascal.

    P.-S. Non, pas avec FreePascal.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    J'ai retravaillé mon unité : j'y ai ajouté une procédure qui permet de cacher le curseur.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    unit miniCrt;
     
    { delphi.developpez.com/faq/?page=applisconsole
      logiterre.org/langages_de_programmation/pascal/faq-delphi-pascal.html
      www.delphipraxis.net/705144-post2.html }
     
    interface
     
    procedure Title(const s: string);
    procedure Color(const caractere, fond: byte);
    procedure ClrScr;
    procedure GotoXY(const x, y: integer);
    procedure CursorOff;
    procedure CursorOn;
     
    {$I Couleurs.inc}
     
    implementation
     
    uses SysUtils, Windows;
     
    procedure Title(const s: string);
    begin
      SetConsoleTitle(Pchar(s));
    end;
     
    procedure Color(const caractere, fond: byte);
    begin
      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), caractere + (fond * 16));
    end;
     
    procedure ClrScr;
    var
      pos: TCoord;
      h: THandle;
      info: TConsoleScreenBufferInfo;
      nbr: LongWord;
      nbr_ecrits: LongWord;
    begin
      pos.x := 0;
      pos.y := 0;
      h := GetStdHandle(STD_OUTPUT_HANDLE);
      GetConsoleScreenBufferInfo(h, info);
      nbr := info.dwSize.x * info.dwSize.y;
      FillConsoleOutputCharacter(h, #32, nbr, pos, nbr_ecrits);
      FillConsoleOutputAttribute(h, info.wAttributes, nbr,  pos, nbr_ecrits);
      SetConsoleCursorPosition(h, pos);
    end;
     
    procedure GotoXY(const x, y: integer);
    var
      pos: TCoord;
    begin
      pos.x := x - 1;
      pos.y := y - 1;
      SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
    end;
     
    procedure CursorOff;
    var
      cci : TConsoleCursorInfo;
    begin
      GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);
      cci.bVisible := FALSE;
      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);
    end;
     
    procedure CursorOn;
    var
      cci : TConsoleCursorInfo;
    begin
      GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);
      cci.bVisible := TRUE;
      SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);
    end;
     
    end.
    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
    const
      NOIR = 0;
      BLEU_FONCE = 1;
      VERT_FONCE = 2;
      CYAN_FONCE = 3;
      ROUGE_FONCE = 4;
      MAGENTA_FONCE = 5;
      MARRON = 6;
      GRIS_PALE = 7;
      GRIS_FONCE = 8;
      BLEU_PALE = 9;
      VERT_PALE = 10;
      CYAN_PALE = 11;
      ROUGE_PALE = 12;
      MAGENTA_PALE = 13;
      JAUNE = 14;
      BLANC = 15;
    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
    program test_miniCrt;
     
    {$APPTYPE CONSOLE}
     
    uses
      miniCrt;
     
    {$R Icone}
     
    begin
      Title('Test miniCrt');
      Color(BLANC, BLEU_FONCE);
      ClrScr;
     
      CursorOff;
      GotoXY(2, 2);
      Write('Curseur invisible. Appuyez sur une touche...');
      ReadLn;
     
      CursorOn;
      GotoXY(2, 4);
      Write('Curseur visible. Appuyez sur une touche...');
      ReadLn;
    end.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire pour utiliser OpenCV avec Delphi XE2 ?
    Par [ZiP] dans le forum Débuter
    Réponses: 4
    Dernier message: 28/03/2013, 20h14
  2. WinGraph : Unité graphique pour Free Pascal et Delphi
    Par forum dans le forum Outils à télécharger
    Réponses: 7
    Dernier message: 08/07/2012, 17h35
  3. Nom de portée de l'unité Windows dans Delphi XE2
    Par franckcl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 15/06/2012, 20h12
  4. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo