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

Delphi .NET Discussion :

Transmission de pointeurs à une procédure


Sujet :

Delphi .NET

  1. #1
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2004
    Messages : 128
    Points : 119
    Points
    119
    Par défaut Transmission de pointeurs à une procédure
    J'ai encore un problème pour porter du code Win32 en .Net

    j'ai une classe avec un champ FExpression de type TMyType

    et dans une procédure j'ai un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadChild(@FExpression,Reader,[TMyExpression])
    Et ReadChild est définie ainsi :

    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
    function TInstantIQLObject.ReadChild(Child: Pointer; Reader: TInstantIQLReader;
      Classes: array of TInstantIQLObjectClass): Boolean;
    var
      I: Integer;
      ObjectClass: TInstantIQLObjectClass;
    begin
      for I := Low(Classes) to High(Classes) do
      begin
        ObjectClass := Classes[I];
        Result := ObjectClass.AtInstance(Reader);
        if Result then
        begin
          TInstantIQLObject(Child^) := ObjectClass.Create(Self);
          TInstantIQLObject(Child^).Read(Reader);
          Exit;
        end;
      end;
      Result := False;
    end;
    j'ai transformer mon code en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadChild(FExpression,Reader,[TMyExpression])
    et enfin

    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
    function TInstantIQLObject.ReadChild(Child: TObject; Reader: TInstantIQLReader;
      Classes: array of TInstantIQLObjectClass): Boolean;
    var
      I: Integer;
      ObjectClass: TInstantIQLObjectClass;
    begin
      for I := Low(Classes) to High(Classes) do
      begin
        ObjectClass := Classes[I];
        Result := ObjectClass.AtInstance(Reader);
        if Result then
        begin
          Child := ObjectClass.Create(Self);
          TInstantIQLObject(Child^).Read(Reader);
          Exit;
        end;
      end;
      Result := False;
    end;
    Mais j'ai un doute pour les transformations. Ne devrait-je poas plutot utiliser un paramètre var pour Child ?

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Dans ce cas j'utiliserais OUT.

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

Discussions similaires

  1. Assigner une procédure sans pointeur
    Par LaurentC33 dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2014, 14h37
  2. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  3. Portée des variables et pointeurs dans une procédure
    Par gicquairea dans le forum WinDev
    Réponses: 6
    Dernier message: 02/10/2007, 11h52
  4. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33
  5. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 22h30

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