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 :

[Type Record] Comment rendre inaccessible un type enfant ?


Sujet :

Langage Delphi

  1. #1
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut [Type Record] Comment rendre inaccessible un type enfant ?
    J'ai créé une classe simple qui utilise des variables utilisant elles-même un type définit dans cette classe.
    Chose que j'aimerai c'est que les types enfants ne soient pas visualisable depuis les autres unités appelant ma classe.

    Ci-dessous un exemple de mon unité de "classe"

    Code Delphi : 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
     
    unit uMaClass
     
    interface
     
    Type TDataCommon = record // Le type enfant
      A,B,C : String;
    end;
     
    Type TData = record
      Common : TDataCommon;
    end;
     
    Type MyClasse = class
      private
        FData : TData;
      protected
     
      public
        property Data : TData Read FData Write FData;
    end;

    Voir ci dessous dans le code le problème que je rencontre en commentaire.

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      MonData : TData; // <--- ici si je tappe TDa puis Ctrl + espace je vois
                               // TDataCommon et TData
      MaClass : TMyClasse;
    begin
      MaClass := TMyClasse.create;
      try
        // code
      finally
        MaClass.free;
      end;

    Comment faire pour ne voir que TData et pas TDataCommon ?

    Je pourrais très bien décaler les types que je ne veux pas afficher dans une autre unité (Genre uMyClassType), mais j'aimerai savoir si c'est possible de les rendre non visible par l'EDI en les laissant dans la même unité.

    Merci ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu peux essayer avec un type imbriqué privé.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    J'ai testé plusieurs solutions mais ca ne fonctionne pas avec les classes imbriquées

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Type TData = record
     
      Type TDataCommon = record // Le type enfant
        A,B,C : String;
      end;
     
      Common = TDataCommon; 
    end;

    En plus il veut que je mette un = à la place des : (la ca compile bien).
    Je vois bien mon Tdata.Common, mais impossible d'avoir accès a A,B ou C.

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Type TData = record
      public
     
        Type TDataCommon = record // Le type enfant
          A,B,C : String;
        end;
     
      var
        Common : TDataCommon; // <-- le type n'existe pas (à la compilation)
    end;

    J'ai même tenté comme çà

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Type TData = record
      Private
        Type TDataCommon = record // Le type enfant
          A,B,C : String;
        end;
      public
     
        Common : TDataCommon; // <-- le type n'existe pas (à la compilation)
    end;

    Mais j'ai la même erreur à la compilation (Le type d'existe pas)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    Certains d'entre vous sont en BSD200x ... qui considère le Record comme une classe (j'ai vu cela, je ne sais pas en quoi cela consiste, pour ceux qui savent, les Record sont devenus des TObject ??? ou hérité ...), je suis en Delphi 6 et 7, et donc les directives de visibilité (private, public) ne passent en Record ...

    sinon pour les déclarations de strucure imbriquée, on a simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    type TData = record
       Common : record // Le type enfant
         A,B,C : String;
       end;
    end;
    utlisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaVarData.Common.A := 'Salut !';
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Thanks Trolly, ca fontionne et c'est largement suffisant pour ce que je veux faire ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. [MySQL] comment rendre un champs de type "date" autoincement alors qu'il est déjà primaire
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/09/2010, 08h48
  2. Comment rendre un input de type checkbox non modifiable
    Par beeboo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/08/2008, 13h54
  3. Comment rendre inaccessible mon code ?
    Par peter27x dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 03/04/2007, 08h39
  4. Réponses: 6
    Dernier message: 29/03/2007, 09h51
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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