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 :

définir une méthode par défaut


Sujet :

Langage Delphi

  1. #1
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut définir une méthode par défaut
    bonjour,

    je me demandais s'il existe un moyen pour définir sous delphi (<= d2006) une méthode par défaut comme pour les propriétés tableau

    style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    type
    TToto = class
    published
        procedure myProc(var varParams: Variant);
    end;
    ..
    myToto:=TToto.Create;
    myToto(50) au lieu de myToto.myProc(50)
    merci par avance pour vos suggestions

  2. #2
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    mmm non on ne peu.

    pas.


    ça ne fonctionne que pour les propriétés tableaux.
    mais rien ne t'empeche (à tester) de faire sur entiers uniquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type
      TMaClass = class
      private
        function GetProc(const Value: integer): extended;
      public
        property Proc[Value: integer] : extended read getProc; default;
      end;
     
     
    function TMaClass.GetProc(const Value: integer): extended;
    begin
      result := Value * sqr(Pi);
    end;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin
      R := MaClass[50]; // 50 * Pi²
    end;

    ha ... essaye en mettant "default;" derrière la proc (ne fonctionnera peut être pas).

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ha ... essaye en mettant "default;" derrière la proc (ne fonctionnera peut être pas).
    déjà testé sans succès...(le compil a lu la doc lui aussi )
    pour le reste je teste ta 1ere proposition
    @+

  4. #4
    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
    Voir le code de la TStrings\TStringList dans Classes.pas
    C'est très éducatif au sujet la propriété par défaut, mais c'est juste pour une propriété !

    Après il reste toujours le mode non objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure myToto(var varParams: Variant);

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    finalement, c'est une impasse car la propriété doit être publiée et c'est incompatible avec le type array imposé par la directive default

    Après il reste toujours le mode non objet
    mmm, le bouzin doit être instancié dans un serveur com créé on-the-fly donc c'est pas top moumoute mais je garde ton code il est collector
    merci pour vos réponses

  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
    Ah, tu rajoutes en plus le published, tu veux faire quoi, tu voudrais pas lancer une méthode en fonction de son nom ou un truc du genre ?

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    tu voudrais pas lancer une méthode en fonction de son nom ou un truc du genre ?
    on peut aussi le voir comme ça
    j'ai écrit un hôte pour langage active scripting (vbscript, jscript, oo rexx, activepython, activeruby etc...)
    en y ajoutant des fonctionnalités qui n'existent généralement pas dans ces langages et en particulier la possibilité
    d'appeler directement des fonctions dans des dll en suivant une syntaxe proche de vba
    mais j'ai un petit problème "cosmétique"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    declare function myfunction lib kernel32.dll alias myfunctionW (myparm1 as long, myparam2 as double) as integer
    j'écris myfunction.call(2 , 778525452525) au lieu de myfunction(2 , 778525452525)
    - soit j'associe à chaque déclaration de fonction un objet distinct portant son nom et je peux appeler alors son unique méthode par défaut sans la nommer expressément
    (c'était le sens de ma question initiale)
    - soit j'associe à chaque déclaration de fonction le même objet unique que j'intégre dans le namespace global du script mais ça suppose de pouvoir créer dynamiquement pour cet objet de nouvelles méthodes portant le nom des fonctions dll
    j'aurais bien voulu m'inspirer de cet article malheureusement je voudrais rester sous D4 et la classe TPublishableVariantType n'existe que depuis la D6
    voili voilou, j'sais pas trop si j'ai été clair sur ce coup

Discussions similaires

  1. [XL-2007] VBA: Définir une valeur par défaut pour un range d'activeX combobox
    Par redhotchilipeppers dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/07/2014, 20h22
  2. Définir une valeur par défaut pour un champ many2one ?
    Par jmbinformatique dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 14/02/2014, 10h42
  3. [Débutant] Définir une valeur par défaut d'une propriété
    Par Rainui dans le forum VB.NET
    Réponses: 15
    Dernier message: 10/01/2013, 22h58
  4. [Tomcat 6] Définir une webapp par défaut
    Par bakka dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 15/10/2010, 11h11

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