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

Langage Delphi Discussion :

function valeur par defaut sur un parametre record


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club Avatar de myflash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Points : 25
    Points
    25
    Par défaut function valeur par defaut sur un parametre record
    comment on passe un parametre par defaut a un parametre record ?

    J'ai un record avec un implicit qui prend un string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    TTestRec = record
        monStr: string;
        class operator Implicit(const Value: string): TTestRec;
    end;
     
    class operator TTestRec.Implicit(const Value: string): TTestRec;
    var
        a: TTestRec;
    begin
        a.monStr := Value;
        result := a;
    end;
    donc ca je peux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
    a: TTestRec;
    begin
    a := 'hello';
    end;


    je peux avoir une procedure avec mon record en parametre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure abc (mavar : TTestRec); 
    var
        manewvar : TTestRec;
    begin
        manewvar := mavar;
    end;
    Mais je ne trouve pas comment passer une valeur par defautl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure abc (mavar : TTestRec = 'ma valeur def'); 
    var
        manewvar : TTestRec;
    begin
        manewvar := mavar;
    end;

  2. #2
    Nouveau membre du Club Avatar de myflash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 63
    Points : 25
    Points
    25
    Par défaut
    bon ben je pense ma faire une procedure avec et une procedure dans le parametre.... pour l'instant ca vas regler mon trouble mais je vais devoir continuer a chercher

  3. #3
    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 : 55
    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 457
    Points
    28 457
    Par défaut
    alors les paramètres par défaut ne sont possibles que pour des constantes...

    à la rigueur tu aurais pu fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    const
      TestRecDefault: TTestRec = (monStr: 'ma valeur def');
     
    procedure abc(const mavar: TTestRec = TestRecDefault);
    begin
     
    end;
    mais tu tombes sur l'errer E2268 Les paramètres de ce type ne peuvent avoir de valeur par défaut.

    il te reste une autre astuce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure abc(const mavar : TTestRec); overload;
    begin
     
    end;
     
    procedure abs(const S: string = 'ma valeur def'); overload;
    begin
      var mavar :  TTestRec;
      mavar  := S;
      abc(mavar );
    end;

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2008, 16h24
  2. [XSD] definire une valeur par defaut sur le xsd
    Par vanesa dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 25/04/2008, 20h39
  3. valeur par defaut sur une liste déroulante
    Par FCL31 dans le forum IHM
    Réponses: 2
    Dernier message: 28/01/2008, 14h33
  4. valeur par defaut d'un parametre de type date
    Par h_a_m_a_d_a dans le forum BIRT
    Réponses: 8
    Dernier message: 23/02/2007, 12h43
  5. valeur par defaut d'un parametre d'une methode
    Par le y@m's dans le forum C++
    Réponses: 16
    Dernier message: 04/05/2005, 21h23

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