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 :

Sortie de la version 13.03.16 de FlashPascal 2


Sujet :

Flash Pascal

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut Sortie de la version 13.03.16 de FlashPascal 2
    Sortie de la version 13.03.16 de FlashPascal 2
    Avec, comme nouveautés, l'apparition des Variant et des objets dynamiques



    http://flashpascal.execute.re/

    Au menu, une correction de bogue :
    - la fonction Pos() retourne une position basée sur 1 et non 0.

    Deux nouveautés :
    - les Variant, qui permettent de jouer plus facilement avec les propriétés des objets ;

    - les objets dynamiques, qui permettent de déclarer un objet de façon très compacte ; la déclaration pouvant être utilisée directement en paramètre de fonction au besoin (Matrice, etc).

    Ces fonctions ont été peu testées, n'hésitez pas à me remonter des bogues.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Très intéressant, ce type variant.

    Merci également pour la correction sur la fonction Pos.

    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
     
    program Chaine;
     
    uses
      Flash8;
     
    {$FRAME_WIDTH 420}
    {$FRAME_HEIGHT 594}
    {$BACKGROUND $F5F5DC}
    {Beige}
     
    const
      ch = 'abcdefg';
     
    var
      t: TextField;
      f: TextFormat;
      s: string;  
     
    begin
      t := TextField.Create(nil, 't', 0, 10, 10, 400, 574);
      f := TextFormat.Create('Courier', 24);
      t.SetNewTextFormat(f);
     
      s := ch                     + #13 // abcdefg
         + IntToStr(Length(ch))   + #13 // 7
         + Copy(ch, 1, 3)         + #13 // abc
         + IntToStr(Pos('a', ch)) + #13 // 1 (v13.03.16)
         + 'fin';
     
      t.text := s;
     
      f.color := clBlue;
      t.SetTextFormat(Pos('7', s), Pos('1', s), f); // le 7 reste en noir
    end.
    Il reste un petit défaut dans la procédure SetTextFormat.

    Bon, je vais essayer d'écrire un exemple avec un objet dynamique, pour voir si j'ai vraiment compris la chose. D'après l'exemple ça paraît plutôt simple.
    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 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    J'ai essayé un truc tout bête (mais qui n'est peut-être pas correct) :

    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
    program variant1;
     
    {$FRAME_WIDTH 420}
    {$FRAME_HEIGHT 594}
    {$BACKGROUND $F5F5DC}
     
    uses
      Flash8;
     
    type
      rec = record
              s: string;
              i: integer;
            end;
     
    var
      r: rec;
      v: variant;
      t: textField;
      f: textFormat;
     
    begin
      t := TextField.Create(nil, 't', 0, 20, 20, 380, 554);
      f := TextFormat.Create('Courier', 24);
      t.SetNewTextFormat(f);
     
      v := [s: 'samedi'; i: 16];
     
      //r := v;
     
      r.s := v.s;
      //r.i := v.i;
     
      t.text := r.s + ' ' + IntToStr(r.i);
    end.
    Les lignes que j'ai changées en commentaires ne passent pas.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Alors pour SetTextFormat, c'est une fonction de Flash, autant je peux rendre la fonction Pos() du Pascal conforme à ce qu'on attends - c'est en fait un String.IndexOf() + 1, autant la méthode Flash restera 0 basée

    pour le type Variant, tu peux forcer
    r.i := Integer(v.i);, par contre ça ne fonctionne pas avec un record...mais je ne suis pas certain que ce soit souhaitable non plus. Si le variant ne possède pas les membres du record la variable sera inconsistante.

    En fait j'ai ajouté les variants et les objets dynamiques pour faciliter l'appel à certaines méthodes de Flash, notamment les matrices. Ou pour récupérer des noeuds XML sans passer par la déclaration d'un type spécifique.

    les objets sont plus souples aussi maintenant :

    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
     
    type
      obj = class
        x : Integer;
      end;
    var
      o: obj;
      i: Integer;
    begin
      o := [x : 5]; // initialisation de l'objet
      o.y := 2; // ne compile pas
      o['y'] := 2; // fonctionne !
      i := Integer(o['y']); // NB o['y'] est un Variant
     
     o := [z : 8]; // fonctionne également...mais o.x est indéfini et o['z'] retourne le variant 8
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    J'ai essayé d'utiliser le type variant pour une matrice, d'après la page sur les objets dynamiques. J'obtiens une erreur, mais je ne sais pas si c'est mon code ou un bug.

    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
     
    program matrice02;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 400}
     
    uses
      Flash8;
     
    type
      tImage = class(movieClip)
        constructor Create(name: string; x, y: integer);
        procedure Carre(taille: integer);
        procedure Remplissage(couleur: integer);
      end;
    {
      tMatrice = class
        matrixType: string;
        x,y,w,h   : double;
        r         : double;
        constructor Create;
      end;
    }
    constructor tImage.Create(name: string; x, y: integer);
    begin
      inherited Create(nil, name, _root.GetNextHighestDepth());
      _x := x;
      _y := y;
    end;
     
    procedure tImage.Carre(taille: integer);
    begin
      taille := taille div 2;
      MoveTo(-taille, +taille);
      LineTo(-taille, -taille);
      LineTo(+taille, -taille);
      LineTo(+taille, +taille);
      LineTo(-taille, +taille);
    end;
     
    var
     {matrice: tMatrice;}
      matrice: variant;
     
    procedure tImage.Remplissage(couleur: integer);
    begin
      Clear;
      LineStyle(0, couleur);
      BeginGradientFill('radial', [$ffffff,couleur], [100,100], [0,255], matrice);
      Carre(300);
      EndFill;
    end;
    {
    constructor tMatrice.Create;
    begin
      matrixType := 'box';
      x := -75;
      y := -75;
      w := 150;
      h := 150;
      r := 0;
    end;
    }
    var
      i: tImage;
     
    begin
     {matrice := tMatrice.Create;}
      matrix := [matrixType: 'box'; x:-75; y:-75; w:150; h:150; r:0];
      i := tImage.Create('', 200, 200);
      i.Remplissage($6600FF); { PersianBlue }
    end.
    Violation d'accès à l'adresse 00403FA0 dans le module 'FlashPascal2.exe'. Lecture de l'adresse FFFFFFDC.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    les deux

    le plantage n'est pas normal, mais ton code est invalide, tu affectes un objet dynamique à "Matrix" qui est une définition de classe, et non ta variable "Matrice"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    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 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ton code est invalide, tu affectes un objet dynamique à "Matrix" qui est une définition de classe, et non ta variable "Matrice"
    Oh, l'étourdi ! Voilà ce que c'est que de travailler quand on a sommeil.

    Correction faite, le programme fonctionne parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      //matrix := [matrixType: 'box'; x:-75; y:-75; w:150; h:150; r:0];
      matrice := [matrixType: 'box'; x:-75; y:-75; w:150; h:150; r:0];
    Merci pour ta réponse, Paul, et pour ta patience.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. [Flash Pascal] Sortie de la version 13.01.02 de FlashPascal 2
    Par Alcatîz dans le forum Flash Pascal
    Réponses: 4
    Dernier message: 07/01/2013, 23h54
  2. [phpBB] Sortie de la version 3.0.2
    Par Yogui dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 14/07/2008, 00h11
  3. Réponses: 4
    Dernier message: 01/02/2006, 11h17
  4. [Eclipse 3.1][News] Sortie de la version M5 d'Eclipse 3.1
    Par bidon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 20/02/2005, 10h46

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