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 :

Le sens des sections var,type et const


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut Le sens des sections var,type et const
    Bonjour tous le monde

    j'ai un projet sur la grammaire Delphi, et je dois comprendre le sens de chaque composant, section, déclaration... dans le langage Delphi

    1er: je veux savoir ou peut-on utiliser le mot clé Absolute et il sert à quoi?

    2eme:

    la différence entre les sections Type, var et const ?
    es-ce qu'on peut déclarer une section var ou const dans le block interface ?

    es-ce qu'on peut déclarer un type classe dans une section var ?
    et es-ce qu'on peut déclarer une section type dans une procédure ou fonction ?

    Merci de me repondre

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 812
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 812
    Points : 13 527
    Points
    13 527
    Par défaut
    1. Absolute permets d'avoir plusieurs références sur la même adresse mémoire. (@a = @b)

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      var
        a :integer;
        b :integer absolute a;
      1. Type: Déclaration de structure.
        Var: Variable.
        Const: Constante.
      2. Oui.
      3. Rien à voir. Ce genre de section ne se termine pas par un end, la fin est implicite lorsqu'un autre label (type, var, const, implementation, procedure, begin, etc.) est trouvé. On peut également retrouver plusieurs sections var, type, etc. dans l'unité.
      4. Oui.


    Dans ton cas, le plus simple serait d'installer Delphi et de voir si ça compile. Tu aurais une réponse immédiate à la plupart de tes questions .

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    Merci pour votre reponse

    pour Delphi, je l'ai installé sur mon pc
    mais je voulais savoir l'utilité de chaque déclaration

    par exemple dans ma grammaire j'ai la syntaxe suivante:
    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
     
    InterfaceSection = ClauseUses, 
                              SectionConst
                              SectionType
                              SectionVar
     
    ImplementationSection = SectionDéclLabel
                                      SectionConst
                                      SectionType
                                      SectionVar
     
    le block de procedure = SectionDéclLabel
                                        SectionConst
                                        SectionType
                                        SectionVar
     
    SectionType peut contenir  : TypeObjet
                                           TypeClasse
                                           TypeInterface
     
    VarSection peut contenir aussi  : TypeObjet
                                                TypeClasse
                                                TypeInterface
    c'est pour ça je voulais savoir les types qu'on peut déclarer dans chaque section, parceque ma grammaire est plus général

    es-ce qu'on peut déclarer un record, ou une énumération, dans une section var ?

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Absolute permet de faire pointer une variable sur une autre sans avoir à déclarer de pointeur. c'est un "branchement" si on puis dire.

    on peu ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function Truc(const A : integer): integer;
    var
      B : integer absolute A;
      C : integer absolute result;
    begin
      C := B; // donnera l'équivalent de result := A;
    end;


    la différence entre les sections Type, var et const ?
    es-ce qu'on peut déclarer une section var ou const dans le block interface ?

    l'interface d'une unité est la partie visible, l'implementation est la partie "non" visible de l'unité.
    toute deux peuvent avoir une ou plusieurs zone Var, Type, Const.
    Type permet de déclarer un nouveau type de donnée.
    Const permet de définir des constantes
    Var permet de définir des variables.

    exemple :
    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
     
    interface
     
    type
      Int32 = integer;
     
    const
      MaxInt32 = high(Int32);
      MinInt32 = low(Int32);
     
    type
      pInt32 = ^Int32;
     
    var
      I : Int32 = MinInt32;
     
    type
      UInt32 = LongWord;
     
    const
      MaxUInt32 = high(UInt32);
      MinUInt32 = low(UInt32);
     
    var
      U : UInt32 = MinUInt32;
     
    implementation
     
    type
      Int32Rec = packed record case integer of
        0: (B3, B2, B1, B0 : byte);
        1: (Hi, Lo : word);
      end;
     
    end.

    es-ce qu'on peut déclarer un type classe dans une section var ?

    oui

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var
      MC : class(TAClass)
        property Prop: integer; default -1;
      end;

    et es-ce qu'on peut déclarer une section type dans une procédure ou fonction ?

    oui

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function Make64(const A, B: LongWord): Int64;
    type
      Int64Rec = packed record case integer of
        0: (Value : int64);
        1: (Hi, Lo : LongWord);
        2: (Ws : array[0..3] of word);
        3: (Bs : array[0..7] of byte);
      end;
    begin
      Int64Rec(result).Lo := B;
      Int64Rec(result).Hi := A;
    end;

    de rien.

  5. #5
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par mima_mine Voir le message
    es-ce qu'on peut déclarer un record, ou une énumération, dans une section var ?
    on peu declarer un record un peu n'importe ou egalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const
      RC : record A, B: integer end = (A: 0; B: 0;);
     
    var
      RV : record A, B: integer end;
    mais
    type incompatible RC <=> RV

    de toute façon le mieux, c'est de lire les FM de delphi.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    Merci pour votre aide

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    juste une question pour absolute

    on utilise le mot absolute juste après une déclaration d'une variable de type simple (string, char....) exp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var
    b:string;
    a: string absolute b;
    on peut l'utiliser aussi après une type array ou set ....

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    oui on peu.

    mais tu sais que tout ce que tu nous demande est ecrit dans l'aide Delphi ?

    par contre on ne peux pas declarer une classe ou une interface directement dans une variable comme dans l'exemple que j'avais donné.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    donc on ne peut pas écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      MC : class(TAClass)
        property Prop: integer; default -1;
      end;
     
    ou bien
     
    var 
    TSalarie : interface
        ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}']
        function  GetScannerInfo:string ;
    	  end;
    et merci pour votre aide

  10. #10
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Points : 65
    Points
    65
    Par défaut
    et même pour la déclaration des fonctions/procédure dans la section var

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    var
    method : function  GetScannerInfo:string ;

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/05/2006, 21h41
  2. Réponses: 13
    Dernier message: 01/02/2006, 12h00
  3. gestion des domaines et types
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 10/03/2004, 10h19
  4. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21
  5. [CR] Grouper des sections de détail?
    Par rodrigue50 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/06/2003, 14h32

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