Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sortie de la version 13.04.29 de FlashPascal 2
Compilateur Pascal pour machine virtuelle Flash

Le , par Paul TOTH

23PARTAGES

3  0 
Sortie de la version 13.04.29 de FlashPascal 2
Avec, comme nouveauté principale, l'ajout des ensembles



http://flashpascal.execute.re/

Bonjour,

Je viens de publier une nouvelle version de FlashPascal 2 !

Au programme :

- Correction du constructeur des classes utilisateurs : il est maintenant possible de dériver d'une autre classe correctement.
Code : Sélectionner tout
1
2
3
4
5
6
7
type
  TMaClass = class
  end;

  TMaClass2 = class(TMaClass)
  end;
- Ajout des SET et SET OF avec les opérateurs IN + - * et de Include et Exclude.
Code : Sélectionner tout
1
2
3
4
type
  TValue = (un = 1, deux, trois);
  TValues = set of TValue;
- Ajout d'un préfixe "." pour les membres d'un Variant dans un With (sans ce point, le compilateur ne peut pas savoir qu'il faut faire référence au Variant car il n'a pas de description !).
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
var
  v: Variant;
begin
  with v do
  begin
    .lineTo(0,0);
    .color := clBlue;
  end;
end;

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Archimède
Membre expérimenté https://www.developpez.com
Le 29/04/2013 à 18:11
Merci , je regarde ça quand le temps me le permettra.
Encore bien actif malgré tes nouvelles fonctions de papa aguerri

a+

anthony
0  0 
Avatar de Roland Chastain
Rédacteur/Modérateur https://www.developpez.com
Le 30/04/2013 à 3:33
Excellent !

Je me suis penché sur le type set of, qui est une particularité du Pascal que j'aime bien.

Code : Sélectionner tout
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
program Set1;

{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}

const
  LARGEUR = 320;
  HAUTEUR = 200;

type
  Number = Double;

  MovieClip = external class
  end;

  TextField = external class
    constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number) as Parent.createTextField;
    property text: string;
  end;

var
  textField1: TextField;
  sortie: string;

function BoolStr(b: boolean): string;
begin
  if b then Result := 'VRAI' else Result := 'FAUX';
end;
  
type
  tJour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
  
var
  s1, s2, s3: set of tJour;

begin
////////////////////////////////////////////////////////////////////////////////
  textField1 := TextField.Create(nil, 'textField1', 0, 0, 0, LARGEUR, HAUTEUR);
////////////////////////////////////////////////////////////////////////////////
  
  s1 := [dimanche, lundi];
  s2 := [jeudi];
  s3 := s1 + s2;
  
  sortie := BoolStr(lundi in s3);
    
{ Résultat : VRAI }
  
////////////////////////////////////////////////////////////////////////////////
  textField1.text := sortie;
////////////////////////////////////////////////////////////////////////////////
end.
Code : Sélectionner tout
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
program Set2;

{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}

const
  LARGEUR = 320;
  HAUTEUR = 200;

type
  Number = Double;

  MovieClip = external class
  end;

  TextField = external class
    constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number) as Parent.createTextField;
    property text: string;
  end;

var
  textField1: TextField;
  sortie: string;

function BoolStr(b: boolean): string;
begin
  if b then Result := 'VRAI' else Result := 'FAUX';
end;
  
type
  tJour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
  
var
  s1, s2, s3: set of tJour;

begin
////////////////////////////////////////////////////////////////////////////////
  textField1 := TextField.Create(nil, 'textField1', 0, 0, 0, LARGEUR, HAUTEUR);
////////////////////////////////////////////////////////////////////////////////
  
  s1 := [dimanche, lundi];
  s2 := [jeudi];
  s3 := s1 * s2;
  
  sortie := BoolStr(lundi in s3);
  
{ Résultat : FAUX }
  
////////////////////////////////////////////////////////////////////////////////
  textField1.text := sortie;
////////////////////////////////////////////////////////////////////////////////
end.
Code : Sélectionner tout
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
program Set3;

{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}

const
  LARGEUR = 320;
  HAUTEUR = 200;

type
  Number = Double;

  MovieClip = external class
  end;

  TextField = external class
    constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number) as Parent.createTextField;
    property text: string;
  end;

var
  textField1: TextField;
  sortie: string;

function BoolStr(b: boolean): string;
begin
  if b then Result := 'VRAI' else Result := 'FAUX';
end;
  
type
  tJour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
  
var
  s: set of tJour;

begin
////////////////////////////////////////////////////////////////////////////////
  textField1 := TextField.Create(nil, 'textField1', 0, 0, 0, LARGEUR, HAUTEUR);
////////////////////////////////////////////////////////////////////////////////
  
  s := [dimanche, lundi];
  
  include(s, vendredi);
  
  sortie := BoolStr(vendredi in s);
  
{ Résultat : VRAI }
  
////////////////////////////////////////////////////////////////////////////////
  textField1.text := sortie;
////////////////////////////////////////////////////////////////////////////////
end.
Code : Sélectionner tout
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
program Set4;

{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}

const
  LARGEUR = 320;
  HAUTEUR = 200;

type
  Number = Double;

  MovieClip = external class
  end;

  TextField = external class
    constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number) as Parent.createTextField;
    property text: string;
  end;

var
  textField1: TextField;
  sortie: string;

function BoolStr(b: boolean): string;
begin
  if b then Result := 'VRAI' else Result := 'FAUX';
end;
  
type
  tJour = (dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi);
  
var
  s: set of tJour;

begin
////////////////////////////////////////////////////////////////////////////////
  textField1 := TextField.Create(nil, 'textField1', 0, 0, 0, LARGEUR, HAUTEUR);
////////////////////////////////////////////////////////////////////////////////
  
  s := [dimanche, lundi];
  
  exclude(s, dimanche);
  
  sortie := BoolStr(dimanche in s);
  
{ Résultat : FAUX }
  
////////////////////////////////////////////////////////////////////////////////
  textField1.text := sortie;
////////////////////////////////////////////////////////////////////////////////
end.
Code : Sélectionner tout
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
program Set5;

{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}

const
  LARGEUR = 320;
  HAUTEUR = 200;

type
  Number = Double;

  MovieClip = external class
  end;

  TextField = external class
    constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number) as Parent.createTextField;
    property text: string;
  end;

var
  textField1: TextField;
  sortie: string;
  
type
  tJour = (dimanche = 1, lundi, mardi, mercredi, jeudi, vendredi, samedi);

const
  ChaineJour: array[1..7]of string = ('dimanche', 'lundi', 'mardi', 'mercredi',
  'jeudi', 'vendredi', 'samedi');
  
var
  s: set of tJour;
  j: tJour;

begin
////////////////////////////////////////////////////////////////////////////////
  textField1 := TextField.Create(nil, 'textField1', 0, 0, 0, LARGEUR, HAUTEUR);
////////////////////////////////////////////////////////////////////////////////
  
  s := [dimanche, lundi];
  
  s := s + [mercredi];

  sortie := '';
  for j := dimanche to samedi do
    if j in s then
      begin
        sortie := sortie + ChaineJour[Ord(j)];
        sortie := sortie + Chr(13);
      end;
      
{ Résultat :
  dimanche
  lundi
  mercredi }
  
////////////////////////////////////////////////////////////////////////////////
  textField1.text := sortie;
////////////////////////////////////////////////////////////////////////////////
end.
0  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 30/04/2013 à 6:50
ah merci de faire des tests, ça améliore le produit
0  0