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

Composants VCL Delphi Discussion :

Impossible d'affecter un événement


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Par défaut Impossible d'affecter un événement
    Bonjour,
    avec ce 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
     
    type TTestSocket = class
           Socket : TClientSocket;
           procedure Erreur(Sender: TObject; SocketError: Integer);
           procedure Create;
         end;
     
    ...
     
    procedure TTestSocket.Create;
    begin
      ...
      Socket := TClientSocket.Create(nil);
      Socket.OnError := Erreur;
    end;

    sur la ligne où j'affecte la procédure "Erreur" à Socket.OnError,
    j'obtiens le message suivant:

    "Erreur: types incompatibles 'TCustomWinSocket' et 'Integer' "

    Je ne comprends pas du tout... j'ai essayé plein de solutions trouvées avec la recherche sur le forum, mais rien n'y fait, impossible d'affecter un quelconque évènement de mon Socket...
    (j'ai aussi essayé de mettre mon Socket en variable à part, ça change rien du tout, toujours l'erreur de type).

    Quand je mets les deux en dehors de la classe (ou de l'objet, le problème ne change pas quand j'intervertis),

    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var Socket : TClientSocket;
     
    procedure XOnError(Sender: TObject; SocketError: Integer);
    begin
    ...
    end;
     
    ...
      Socket.OnError := XOnError;
    J'obtiens l'erreur:
    "Types incompatibles: 'pointeur de méthode' et 'procédure régulière'". (en anglais: regular procedure).


    Je suis paumé, et donc complètement bloqué dans l'avancement de mon projet.
    Merci d'avance de votre aide.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    property OnErrorEvent: TSocketErrorEvent;

    TSocketErrorEvent = procedure (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer) of object;
    il faut donc que ta procédure Erreur suive la même déclaration pour être du même type et affectable...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre averti
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Par défaut
    OUPS!

    J'ai regardé l'aide de delphi pour OnError,
    et je suis tombé sur ça:

    TSocketErrorEvent is the type for event handlers that respond when a socket reports an error.

    Unit

    Sockets

    Delphi syntax:

    type TSocketErrorEvent = procedure (Sender: TObject; SocketError: Integer) of object;
    J'avais donc la mauvaise syntaxe, j'aurais dû m'en douter!
    Merci !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/08/2008, 08h22
  2. Réponses: 0
    Dernier message: 14/05/2008, 09h45
  3. Impossible d'affecter TADOQuery a TADOQuery
    Par lejert dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/04/2007, 15h20
  4. [VB.NET]Impossible d'affecter un datasource au combobox !
    Par BalBalNet dans le forum Windows Forms
    Réponses: 11
    Dernier message: 03/11/2006, 10h01
  5. impossible d'affecter une valeur à un objet
    Par Dafbau dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2006, 10h48

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