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

 Delphi Discussion :

Record et classe


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Record et classe
    Bonjour,
    J'ai un programme qui marche correctement avec un objet.
    Un ensemble de valeurs sont calculées dans une methode de la classe et sont transmises pour etre utilisées dans le programme principal.
    Par soucis de clarté et pour apprendre à utiliser les record, j'ai simplement remplacé un tableau par un record.
    Je n'ai pas d'erreur de compilation mais les valeurs ne sont plus transmises.
    Y-a-t'il une incompatibilité (du genre pointage ...) ou une subtilite que je ne connais pas ?
    Ca marche avec un tableau et pas avec un record !
    J'espere avoir reussi à expliquer mon probleme
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Sans un Code (juste le nécessaire) comment savoir ce que sont tes objets, record et tableau

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je vais essayer de montrer l'essentiel de mon code sans en mettre des pages :

    Dans mon prog principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    stockCHAUD:=Tstock.create(matPCM);
    ...
    stockCHAUD.INTversDERIV(stockCHAUD.FxTP,stockCHAUD.FdMUS,stockCHAUD.Finfos);
    ...
    Series1.addXY(h,stockCHAUD.Finfos.qx);
    ...
    Ma unit de classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Tstock = class
    ...
    	public
    	FInfos : Tdata;
    ...
    end;
    ...
    procedure Tstock.INTversDERIV(xTP:vecteur ; var dMUS:vecteur;Finfos:Tdata);
    var 	...
    begin
    ...
    	FInfos.qx	:= dq_x;
    ...
    end;
    ET dans une unit (appelée par les autres unit):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    type
    Tdata = record
    	qx:extended;
    	qo:extended;
    	qhtf:extended;
    	Tcs:extended;
    	sigma :extended;
    end;
    Avant, au lieu du record Finfos, j'avais un tableau et ca marchait bien. Maintenant, je n'ai pas de message d'erreur mais stockCHAUD.Finfos.qx reste égale à 0 alors qu'au sein de la méthode INTversDERIV, je vois que Finfos.qx est modifié !!
    Merci d'avance

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Il te faut rajouter un var pour que les modifications du record soit prises en compte dans la procédure. Car c'est la variable FInfos de ta procédure qui sera prise en compte et pas celle de ta class (C'est une grosse faute d'écriture ce que tu fais, tu devrais changer les noms de tes varaibles pour ne pas te melanger)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure Tstock.INTversDERIV(xTP:vecteur ; var dMUS:vecteur; var Finfos:Tdata);

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oh merci ... il manquait donc juste 3 petites lettres !!! Quel bonheur de voir mes courbes réapparaitre à l'écran
    Et puis, oui, je sais q je ne maitrise pas encore les conventions pour les noms de variables, là je me suis laissée aller
    Encore merci

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Comme le remarque Rayek
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure Tstock.INTversDERIV(xTP:vecteur ; var dMUS:vecteur; var AInfos:Tdata);
    AInfos comme nom de paramètre pour ne pas masquer FInfos ...
    En général, A est souvent utiliser comme préfixe d'un paramètre (ce vient-il de l'article indéfini a de l'anglais, ou autre chose je ne sais rien), parfois ou voit aussi "_Infos"

Discussions similaires

  1. Classe et record
    Par pepi22 dans le forum Langage
    Réponses: 10
    Dernier message: 24/02/2009, 18h13
  2. Records ou Classe
    Par Max.Adorable dans le forum F#
    Réponses: 12
    Dernier message: 06/08/2008, 14h04
  3. Erreur "Type Record, Object ou Class requis"
    Par gogéta91 dans le forum Débuter
    Réponses: 5
    Dernier message: 31/07/2008, 09h16
  4. Réponses: 9
    Dernier message: 10/03/2007, 08h39
  5. type record, objerct ou classe requis ?
    Par babou54 dans le forum Delphi
    Réponses: 3
    Dernier message: 10/01/2007, 13h39

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