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 :

Passage d'un type procédure en paramètre par défaut


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut Passage d'un type procédure en paramètre par défaut
    BOnjour,
    J'ai un Type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     type TUpdateBD = procedure(const pRespStat :TObjectCollection;
                            const cas: string; const pLogID, pCampaignID : integer);
    Qui voit son code défini dans une de mes fiches.

    Je passe à une fonction (d'une autre fiche qui ne doit pas avoir la premiere défini dans ses uses sinon je me triturerais pas autant les méninges ) ces valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Procedure TCampaign.ApplyLog (const pLogCollec : TObjectCollection;
                            pUpDateBd : TUpdateBD = nil);
    Et je voudrais pouvoir faire effectuer lors du code de ApplyLog la fonction pUpDateBD si <> nil genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ( pUpDateBd <> nil ) then pUpdateBD(self.RespondentStatus,
                            'insert', StrToInt(tmpID), self.ID);
    mais le vilain compilateur me dit :
    [Erreur] Campaign.pas(657): Pas assez de paramètres originaux .

    j'ai essayé en transtypant : TUpdateBD(pUpDateBD) le résultat est le même.

    A quoi est ce du, je ne peux pas faire ca comme ca ? Car si je ne met pas ce if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pUpdateBD(self.RespondentStatus,
                            'insert', StrToInt(tmpID), self.ID);
    quand j'arrive avec un nil au moment de lancer la procédure j'ai une erreur de violation d'accès 000000, ce qui est normal.Comment faire , merci .

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Pour les gens intéressés j'ai trouvé :

    il suffit de mettre un @ dans le if :
    si l'adresse de la procédure est nulle alors ne fait rien sinon lance la procédure.

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

Discussions similaires

  1. Passage d'un type Query en paramètre d'une methode
    Par crixcrox dans le forum Général Java
    Réponses: 0
    Dernier message: 15/05/2014, 12h33
  2. [XL-2010] Changement des paramètres par défaut de .Find après éxécution d'une procédure
    Par max160 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/05/2014, 19h15
  3. [C# .NET2] type de passage de paramètre par défaut
    Par gdkenny dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/04/2006, 11h55
  4. Réponses: 2
    Dernier message: 19/03/2005, 18h09

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