Constante d'un record contenant des record

Résolu
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 30 oct. 2006 à 12:30
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 31 oct. 2006 à 09:17
salut a tous, mon probleme est assez simple a ennoncer, mais je ne comprend pas pourquoi ca ne marche pas.
Je cherche a faire des constantes sur mes records, qui sont structures ainsi :

type
    point = record
       x: extended;
       y: extended;
       z: extended;
    end;
const
    pointNul : point = (x: 0; y: 0; z:0);

function setPoint(x,y,z: extended): point;

type
    repere = record
       o: point;
       x: point;
       y: point;
    end;

const
    repereStandard: repere = ( o: (x:0;y:0;z:0); x: (x:1;y:0;z:0); y: (x:0;y:1;z:0)); //celui ci marche
    repereStandard: repere = ( o: pointNul; x: setPoint(1,0,0); y: setPoint(0,1,0)); //la je voudrais utiliser des constantes/fonctions

donc je souhaiterais savoir si il est possible d'utiliser des constantes/fonctions dans la declaration ci dessus.

merci de votre aide

   

9 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 124
30 oct. 2006 à 12:57
Tu ne peux pas:
- Tu ne peux pas executer de fonctions dans les constantes.
- pointNul est un type et non une valeur.
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
30 oct. 2006 à 23:25
ah ok... ben tu peu pas.

a moins de faire :

procedure ParamDefault; overload; forward;

procedure ParamDefault(const Repere : TReperePEX); overload; forward;

procedure ParamDefault;

begin
   ParamDefault(ReperePEXNul);
end;

procedure ParamDefault(const Repere : TReperePEX);

begin
   ... traitement ...
end;

<hr size="2" width="100%" />Croc (click me)
3
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
30 oct. 2006 à 13:07
pointNul est un type? meme si il est declaré dans la partie const?
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
30 oct. 2006 à 13:12
et donc je ne peux pas declarer une fonction avec en parametre pointNul?

procedure MaProc(UnPoint: point = pointNul);

?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 124
30 oct. 2006 à 13:31
pointNul n'est pas un type, j'ai parler trop vite (l'habitude du C). C'est pour ca que j'ai corrigé... Mais mon browser a quand meme envoyé l'autre avant que j'ai eu le temps d'annuler.

Par contre je maintiens que tu ne puisse pas executer de fonctions dans un déclaration de constantes. Si tu mets une fonctions dans une constantes, le resultat devient depedant de la fonction et n'est donc plus constant...
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
30 oct. 2006 à 13:58
et en ce qui concerne le const en parametre par defaut d'une fonction?
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
30 oct. 2006 à 14:54
oui on ne peu mettre de fonctions dans les declarations de constante.
par contre tu peu declarer tes constantes en variables et les initialisées dans la partie Initialization de l'unité.

attention aux identifiants existant et aux conventions d'ecriture!

type
    TPointEx = record
       x,y,z: extended;
    end;

    TReperePEX = record
       rO,rX,rY : TPointEx;
    end;

function PointEx(const Ax,Ay,Az : extended) : TPointEx;
begin
  result.X := Ax;
  result.Y := Ay;
  result.Z := Az;
end;

<hr size="2" width="100%" />Croc (click me)
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
30 oct. 2006 à 15:16
heu je crois que tu n'as pas bien compris ma question foxi.
ce que je veux faire, c'est passer une constante que j'ai cree en tant que parametre par defaut d'une fonction.
pour reprendre ton exemple, j'aurai :

const
    ReperePEXNul: TReperePEX = (rO: (x:0;y:0;z:0); rX: (x:1;y:0;z:0); rY: (x:0;y:1;z:0));

et je voudrais faire une fonction qui prenne cette constante en parametre par defaut :

procedure ParamDefaut(repere: TReperePEX = ReperePEXNul);

mais apparament, je ne peux pas passer ReperePEXNul comme valuer par defaut !!!
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
31 oct. 2006 à 09:17
ok, merci tout le monde :)
0
Rejoignez-nous