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 :

Assigner Propriété/procedure à un object chargé dynamiquemen


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 17
    Points
    17
    Par défaut Assigner Propriété/procedure à un object chargé dynamiquemen
    bonjour tous,

    j'ai un gros souci avec une utilisation des plus basique dans les BPL.
    je souhaite assigné une procedure X à une propriété (evenement perso) d'un Object chargé depuis un bpl.
    malheureusement je me retrouve avec le message 'pas assez de parametres originaux'.
    J'ai l'impression que Delphi ne veut pas que j'assigne ma methode comme on peut le faire avec des TNotifyEvent habituellement et demande les parametres necessaires a l'appel de cette methode.

    j'ai testé SetPropValue SetMethodProp mais rien ne marche. voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    type
      TEventError = procedure (CatchException: Exception;TypErr: TEnumErr; Mess: String) of Object;
    ...
    procedure ThrowError(CatchException: Exception;TypErr: TEnumErr; Mess: String);
    ...
    property ErrorEvent : TEventError read FOnErrorEvent write FOnErrorEvent;
    ...
      //v : variant avec throwError assigné à ErrorEvent
      if IsPublishedProp(LoadObject,'OnErrorEvent') then 
      begin
        v := ErrorEvent;
        SetPropValue(LoadObject,'OnErrorEvent',v);
      end;
     
       ou
     
       //v: Tmethod
        v := ThrowError;
        SetMethodProp(LoadObject,'OnErrorEvent',v);
    Quelqu'un est t il deja passé par là?

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    déjà il y a un truc bizarre:
    Tu déclares ta propriété ErrorEvent puis tu testes sur OnErrorEvent...
    Ensuite, tu pourrais nous montrer comment tu assignes v?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    c'est parce que OnErrorEvent est la propriete de l'objet chargé.
    et sinon je prends juste une variable dans ma procedure qui fait cet appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var v : variant;
     ou
    var v : TMethod;
    mais rien ne passe.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Je vais pas me casser la tete je vais tester la chose suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if IsPublishedProp(TeachObject,'OnErrorEvent') then
                begin
                  v.Data := Self;
                  v.Code := MethodAddress('ThrowError');
                  SetMethodProp(TeachObject,'OnErrorEvent',v);
                end;
    Advienne que pourra je recompile tout ca en test

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    Ca marche! ca tombe bien parce que je vais meme pouvoir aller en week end le coeur leger.

    J'aurais du repartir de la base des le debut.

    Par contre juste pour prevenir, si throwerror ne passe pas en published Code sera a nil et creera des Runtime Error si l'evenement OnErrorEvent est appelé. Le test "if Assigned(OnErroEvent) then" dans le paquet ne changera rien à la donne. C'est fort dommage.

    Le mieux serait encore de rajouter un if Code<>nil apres le methodaddress pour coder proprement. mais je ne vois pas exactement comment proteger le code dans le paquet...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.2] Attempt to assign property of non-object
    Par JCEYMER dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2009, 13h46
  2. type Montype =procedure of object;
    Par Jcpan dans le forum Débuter
    Réponses: 7
    Dernier message: 03/12/2008, 21h36
  3. propriétés de balise object
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 29/09/2008, 16h47
  4. Réponses: 14
    Dernier message: 21/07/2006, 14h43

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