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 Discussion :

probleme avec property dans une class


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut probleme avec property dans une class
    Bonjour,

    Me re-voici avec une nouvelle question sur les classes .

    Si on part de ce code qui marche:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    type
      Tdata = class
      private
         Int:LongInt;
         Reel:double;
         Text:string;
      published
        property v : LongInt read Int write Int; //overload;
        //property Value : double read ReadDouble write WriteDouble; overload;
        //property Value : string read ReadString write WriteString; overload;
      public
        constructor Create;
        destructor Destroy;
      public
        procedure SetInt(value: LongInt);
    //    procedure SetDouble(value: Double);
    //    procedure SetString(value: String);
     
      end;
     
     
    var
      Form1: TForm1;
      D: Tdata;
     
    implementation
     
    {$R *.dfm}
     
    constructor Tdata.Create();
    begin
      Int:=0;
      Reel:=0;
      Text:='0';
    end;
     
    destructor Tdata.Destroy;
    begin
    end;
     
    procedure Tdata.SetInt(value: LongInt);
    begin
    	Int:=value;
      Reel:= value;
      Text:=inttostr(value);
    end;
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Button1.Caption:='OK';
    D:=Tdata.Create;
    D.SetInt(6);
    end;
     
    end.
    Si je change la decalartion que ma class en marquant (cf parti en rouge):
    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
    type
      Tdata = class
      private
         Int:LongInt;
         Reel:double;
         Text:string;
      published
        property v : LongInt read Int write SetInt; //overload;
        //property v : double read ReadDouble write WriteDouble; overload;
        //property v : string read ReadString write WriteString; overload;
      public
        constructor Create;
        destructor Destroy;
      public
        procedure SetInt(value: LongInt);
    //    procedure SetDouble(value: Double);
    //    procedure SetString(value: String);
    
      end;
    Delphi me jete avec le message d'erreur:
    [Erreur] Unit1.pas(26): Identificateur de champ ou de méthode attendu

    Je ne comprends vraiment pas pourquoi... quelqu'un peut il me dire ce qui cloche dans ma déclaration?

    Aprés j'ai une deuxième question: peux t-on faire un overload sur une property ?

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    SetInt doit être le nom d'une procédure privée qui prend un paramètre Value du même type que ta property.
    Le plus simple est que tu mette le curseur sur la ligne de ta property et que tu fasse : ctrl+shift+c, Delphi devrait compléter ce qu'il manque.

    @++
    Dany

    ps : et à ma connaissance il n'est pas possible de mettre une close overload sur la property.

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    La méthode n'a pas besoin d'être private, mais elle doit être connue au moment de la compilation de la propriété, donc placée avant

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    Merci

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

Discussions similaires

  1. Probleme ouverture fichier dans une classe
    Par theo7 dans le forum C++
    Réponses: 18
    Dernier message: 11/08/2008, 14h25
  2. probleme d'image dans une class
    Par jerem721 dans le forum Graphisme
    Réponses: 2
    Dernier message: 30/12/2007, 15h20
  3. Problème avec .configure dans une classe
    Par Instanton dans le forum Tkinter
    Réponses: 2
    Dernier message: 29/12/2007, 09h37
  4. [linker]Probleme avec SDL dans une application Ogre3D
    Par smarties dans le forum Visual C++
    Réponses: 2
    Dernier message: 15/01/2007, 14h29
  5. [Tableaux] Probleme variable statique dans une classe
    Par Joe Le Mort dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2006, 11h35

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