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 :

Problème dans la création d'une class


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    Par défaut Problème dans la création d'une class
    Bonjour,

    J'essaie de créer ma propre classe nommé Trpoint.
    Voilà comment je l'ai implémenté:

    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart;
     
    type
      TForm1 = class(TForm)
        ...
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    type
     Trpoint = class
      private
        X_:Real;
        procedure SetX(Valeur: real);
      public
        constructor Create;
        destructor Destroy;
        property X:real read X_ write SetX;
      end;
     
    var
      Form1: TForm1;
      pp:Trpoint;
     
    implementation
     
    {$R *.dfm}
    constructor Trpoint.Create;
    begin
      X_:=0;
    end;
     
    destructor Trpoint.Destroy;
    begin
    end;
     
    procedure Trpoint.SetX(Valeur: real);
    begin
      X_ := Valeur;
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    var r:real;
    i:integer;
    begin
      r:= pp.X;
      i:=round(r);
      Button3.Caption:=inttostr(i);
    end;
     
    end.
    Il semble que je fais mal la déclaration de la classe Trpoint puisque lorsque j'appuis sur le bouton ca plante. (cf image en piéce jointe).

    Est ce quelqu'un comprend d'où vient l'erreur?

    Merci d'avance à tous ceux qui pourront m'aider.
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Par défaut
    Ta oublié une chose cruciale, l'initialisation de ta classe.

    Et bien sur ne pas oublier de libérer la classe


  3. #3
    Membre confirmé
    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
    Par défaut
    pp.free ou pp.Destroy ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 69
    Par défaut
    bonjour,

    il vaut mieux utiliser free.

    Copie de l'aide delphi :
    N'appelez pas directement System::TObject::Destroy. Appelez plutôt System::TObject::Free. Free vérifie que la référence objet n'a pas la valeur nil avant d'appeler System::TObject::Destroy.

  5. #5
    Membre confirmé
    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
    Par défaut Mettre une class dans un autre fichier .pas
    Merci, pour cette reponse.

    J'ai une nouvelle question. Voila, j'aimerai rendre mon cote plus propre et mette la déclaration de la classe et toutes les déclarations des fonctions et les procedures qui lui sont associées dans un autre fichier .pas.

    Qu'est ce qu'il faut mettre dans unit1 pour lui dire d'aller cherche la class dans fichiers MyClass.pas?
    Est ce que dans MyClass.pas je mets les champs unit, interface, uses ou je commence directement à la déclaration à type?


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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Tu ne peux pas !

    La déclaration et l'implémentation de ta classe doivent se trouver dans la même unité.
    On pourrait imaginer passer par des "include", mais ça ne rendra pas ton code plus lisible.

    ps: 1 seule question par post stp .

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

Discussions similaires

  1. Problème dans la création d'une grille de Sudoku
    Par Aurelienjjj dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/02/2013, 17h40
  2. Réponses: 4
    Dernier message: 01/02/2013, 11h32
  3. problème dans la création d'une requête
    Par LeCogiteur dans le forum Langage SQL
    Réponses: 0
    Dernier message: 25/02/2008, 00h43
  4. Réponses: 2
    Dernier message: 10/12/2007, 18h47
  5. [C++] Création d'une classe dans un fichier
    Par Pfeffer dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/05/2007, 15h49

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