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

Lazarus Pascal Discussion :

[0.9.28.2/Mac OS] Compilation unité visitor pattern [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 34
    Points : 59
    Points
    59
    Par défaut [0.9.28.2/Mac OS] Compilation unité visitor pattern
    Bonjour,
    Ceci est mon premier post sur ce site qui est décidément incontournable. Je suis autodidacte et m'interesse actuellement aux concepts/notions de persistance et de design patterns. Pour cela, je m'aide du tuto de ercaz54 : http://blog.developpez.com/erca57/p6...tern/#more6767 .
    J'essaie de compiler le code suivant sans succés :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    unit uOPFRoot;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils;
     
    Type
      TBizObj = class(TObject)
      public
        procedure AcceptBizObjVisitor(Visitor: TBizObjVisitor );  virtual;
      end;
     
      TBizObjVisitor = class(TObject)
      public
        procedure VisitBizObj(Instance: TBizObj); virtual;
      end;
     
    implementation
     
    {
    ******************************** TBizObjVisitor ********************************
    }
    procedure TBizObjVisitor.VisitBizObj(Instance: TBizObj);
    begin
    end;
     
    {
    *********************************** TBizObj ************************************
    }
    procedure TBizObj.AcceptBizObjVisitor(Visitor: TBizObjVisitor);
    begin
      Visitor.VisitBizObj(Self);
    end;
     
    end.
    Le message retourné par le compilateur est : uopfroot.pas(15,59) Error: Identifier not found "TBizObjVisitor"

    J'utilise Lazarus 0.9.28.2 beta et fpc 2.2.4 sur machine Mac OS 10.6.2

    Merci d'avance.

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 34
    Points : 59
    Points
    59
    Par défaut Compilation sous Debian Lenny
    Re bonjour,
    Vu que personne n'a émis d'avis, je me suis amusé à compiler le même code sur une Debian Lenny 2.6.26-2-686 / Lazarus 0.9.28.2-0 beta / fpc 2.2.4-3.
    Ben, toujours le même message d'erreur.

    J'essayerais ce soir sur une Delphi+Win et vous dirais ce qu'il en est.

    Si quelqu'un pense que je devrais me diriger vers un autre forum (sur developpez.net) ou indiquer un lien ou une piste, j'en serais très heureux.

    Salutations.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue,

    Le type TBizObjVisitor étant déclaré après TBizObj, il est inconnu pour le compilateur lorsqu'il est utilisé comme type du paramètre Visitor.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Compilation unité visitor pattern
    Salut,

    ça n'a rien à voir avec la plateforme. Il faut juste que tu fasse une "forward declaration".
    En gras et italique, le code à ajouté.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Type
      
      // déclaration forward pour dire au compilateur ce qu'est TBizObjVisitor
      TBizObjVisitor = class; 
    
      TBizObj = class(TObject)
      public
        procedure AcceptBizObjVisitor(Visitor: TBizObjVisitor );  virtual;
      end;
     
      TBizObjVisitor = class(TObject)
      public
        procedure VisitBizObj(Instance: TBizObj); virtual;
      end;
     
    implementation
     
    {
    ******************************** TBizObjVisitor ********************************
    }
    procedure TBizObjVisitor.VisitBizObj(Instance: TBizObj);
    begin
    end;
     
    {
    *********************************** TBizObj ************************************
    }
    procedure TBizObj.AcceptBizObjVisitor(Visitor: TBizObjVisitor);
    begin
      Visitor.VisitBizObj(Self);
    end;
     
    end.
    Salut.

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 34
    Points : 59
    Points
    59
    Par défaut Merci
    Bonsoir,
    Merci à Alcatîz et à thierrydij pour leur posts. Effectivement, ceci n'avait rien à voir ni avec la plateforme, ni avec l'EDI utilisé. Ca ne passait pas non plus avec le couple Windows+Delphi.

    Grace à la "forward declaration", tout est rentré dans l'ordre et je vais pouvoir continuer sur le tuto de ercaz54.

    Merci à tous pour la patience et longue vie à developpez.net.

    A+

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

Discussions similaires

  1. Directives de Compilation + unités partagées
    Par loukoum82 dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2010, 12h02
  2. [Lazarus] [Ubuntu] Impossible de compiler : unité Interfaces introuvable
    Par SergioMaster dans le forum Lazarus
    Réponses: 6
    Dernier message: 15/09/2009, 17h39
  3. Réponses: 3
    Dernier message: 11/08/2009, 19h41
  4. Décomposition : compilation unit expected!
    Par m@tix dans le forum Ada
    Réponses: 16
    Dernier message: 05/02/2009, 13h54
  5. [BPW] Problème de compilation unité WinAPI
    Par mannostab dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 10/03/2006, 19h35

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