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

Flash Pascal Discussion :

Écrire du code compilable avec Free Pascal


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 095
    Points : 15 569
    Points
    15 569
    Billets dans le blog
    9
    Par défaut Écrire du code compilable avec Free Pascal
    Bonjour ! Je vous propose d'échanger des observations autour du problème suivant : écrire pour FlashPascal du code compatible avec les compilateurs disons usuels comme Free Pascal ou Delphi.

    Ou plus modestement, je vous fais part des problèmes (peu nombreux) rencontrés lors d'une tentative pour compiler avec Delphi 6 une unité modifiée pour FlashPascal.

    En fait je n'ai guère rencontré qu'un seul problème, c'est que les déclarations suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const
      VIDE   = '.';
      BLANC  = 'X';
      NOIR   = 'O';
    sont des chaînes pour FlashPascal, ce que j'ai contourné en appelant les caractères de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function AutreCouleur(const aPion: char): char;
    begin
      if aPion = BLANC then
        result := NOIR[1]
    Du coup le code n'est plus accepté par Delphi, qui attend un "array".

    Autrement, j'ai un problème avec cette constante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const
      LOW_INT   = $80000000;
    Pour FlashPascal, ça donne bien le nombre recherché (la limite inférieure du type integer),

    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
    program test_integer;
     
    {$FRAME_WIDTH 550}
    {$FRAME_HEIGHT 400}
    {$FRAME_RATE 12}
    {$BACKGROUND $FFFFFF}
     
    uses
      Flash8;
     
    var
      tf: TextField;
     
    begin
      tf := TextField.Create(_root, 'tf', 0, 0, 0, 550, 400);
      with tf do begin
     
        text := IntToStr($80000000);
     
      end;
    end.
    mais avec Delphi c'est interprété comme un nombre supérieur. J'ai trouvé la solution suivante, qui passe aussi avec FlashPascal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      i := $80000000;
      i := integer($80000000);
    Joyeuses Pâques !

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 095
    Points : 15 569
    Points
    15 569
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    En fait je n'ai guère rencontré qu'un seul problème, c'est que les déclarations suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const
      VIDE   = '.';
      BLANC  = 'X';
      NOIR   = 'O';
    sont des chaînes pour FlashPascal, ce que j'ai contourné en appelant les caractères de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function AutreCouleur(const aPion: char): char;
    begin
      if aPion = BLANC then
        result := NOIR[1]
    Du coup le code n'est plus accepté par Delphi, qui attend un "array".
    Finalement la solution était aussi un transtypage explicite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function AutreCouleur(const aPion: char): char;
    begin
      if aPion = BLANC then
        result := char(NOIR)
      else
        result := char(BLANC);
    end;
    Voilà, mon unité peut-être compilée avec FlashPascal et avec Delphi ou Free Pascal. C'est intéressant, non ?

  3. #3
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 095
    Points : 15 569
    Points
    15 569
    Billets dans le blog
    9
    Par défaut
    On pourrait imaginer d'avoir une directive {$IFDEF}.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {$IFDEF FLASHPASCAL}
    uses
      Flash8;
    {$ENDIF}
     
    function RandomAB(a, b: integer): integer;
    begin
      result := a + Trunc(Random * (b - a + 1)); // La fonction Random est déclarée dans l'unité Flash8.
    end;

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 095
    Points : 15 569
    Points
    15 569
    Billets dans le blog
    9
    Par défaut
    A propos des unités, un petit défaut que j'ai remarqué, c'est que le mot-clé uses est autorisé dans la section implementation d'une unité, mais il semble être sans effet.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/02/2010, 23h12
  2. Réponses: 5
    Dernier message: 15/12/2007, 23h55
  3. [Free Pascal] Utiliser du code C avec Free Pascal sous Windows
    Par richard dans le forum Free Pascal
    Réponses: 4
    Dernier message: 17/02/2007, 16h26
  4. Réponses: 10
    Dernier message: 14/04/2005, 20h23
  5. [FreePascal]Erreur de compilation avec Dev-Pascal
    Par youngeikichi dans le forum Free Pascal
    Réponses: 3
    Dernier message: 17/02/2005, 15h22

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