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 :

Améliorer la lisibilité du code ..


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut Améliorer la lisibilité du code ..
    Bonjour,

    Voila le problème : ma fiche principale (Main.pas) fait déja pas mal de ligne, et j'aimerai couper/coller mes fonctions dans une autre fiche (MesFonctions.pas) ...

    Sauf que je ne s'est pas faire la transposition sans crée une nouvelle classe.
    (qui entrainerai une modification de ma fiche principal ... les appels de mes fonctions deviendraient MaNouvelleClasse.MaFonction ... au lieu de MaFonction)

    Mahleureusement pour moi, je ne comprend pas grand chose a l'ordre des 'interface', 'uses','implémentation' ... ect :s

    Je rechercherai donc la rédaction type de ma fiche MesFonctions.pas

    (jai déja la premiere ligne

    unit MesFonctions;



    J'espère être assez claire Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut Petit exemple
    Bonjour

    J'ai créé une fiche avec un TEdit et un TButton.
    Lorsque je clique sur le bouton, ça écrit "toto" dans le TEdit
    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
     
    unit Unit1;
     
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text := 'toto';
    end;
     
    end.
    Maintenant si tu veux sortir le code du bouton dans une autre unité, tu peux faire de la façon 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
    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
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    uses Unit2;
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      EcrireTexte(Self);
    end;
    
    end.
    
    -------------
    
    
    unit Unit2;
    
    interface
    
    uses Unit1;
    
    procedure EcrireTexte(F: TForm1);
    
    implementation
    
    procedure EcrireTexte(F: TForm1);
    begin
      F.Edit1.Text := 'toto';
    end;
    
    end.
    Dans ton cas, Unit1 contient main.pas et Unit2 correspond à MesFonctions.pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    Malheureusement c'est pas vraiment mon probleme

    Voila un exemple de ma fiche Main.pas
    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
     
    unit main;
     
    interface
     
    uses Main;
     
    ...
     
    implementation
     
    {$R *.dfm}
     
    function Mafonction(Msg : String) : String;
    begin
    //je traite mon Msg ...
    end;
    et en faite j'aimerai mettre toute ces fonctions (et pas les procedures) dans une autre fiche
    Les procedures je les laisses sur la fiche Main.pas

    J'espère que j'ai été plus claire.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut Pas compris
    Bon, je suis pas sûr d'avoir compris mais tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    unit main;
     
    interface
     
    ...
     
    implementation
     
    uses MesFonctions;
     
    {$R *.dfm}
    et ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    unit MesFonctions;
     
    interface
     
    function Mafonction(Msg : String) : String;
     
    implementation
     
    function Mafonction(Msg : String) : String;
    begin
    //je traite mon Msg ...
    end;
    tes fonctions sont dans le fichier MesFonctions.pas
    elles sont utilisables dans l'implémentation du Main.pas grace à l'instruction uses Mesfonctions

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    Exactement.

    Lors de la complilation suivant ton model j'ai l'erreur suivante

    [Erreur] MesFonctions.pas(29): Déclaration forward ou external non satisfaite : 'Test'

    Une idée?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut déclaration forward
    Ca peut signifier que la fonction Test est déclarée dans la partie interface mais pas dans la partie implémentation.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Par défaut
    Après correction voila l'état de mes 2 fiches:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    unit main;
     
    interface
     
    uses MesFonctions;
     
    ...
     
    implementation
     
    {$R *.dfm}
     
    ...

    Fiche 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    unit MesFonctions;
     
    interface
     
    implementation
     
    function Test(Msg : String) : String;
    begin
      Result := Msg;
    end;
     
    end.
    Erreur lors de la compilation :
    [Erreur] Main.pas(93): Identificateur non déclaré : 'Test'

    Une autre idée?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/01/2014, 18h27
  2. Améliorer la qualité du code
    Par jeroc dans le forum SAP
    Réponses: 10
    Dernier message: 14/08/2008, 11h35
  3. [POO] Avis sur la Lisibilité du code
    Par redsaint0 dans le forum Langage
    Réponses: 7
    Dernier message: 12/03/2007, 21h09
  4. [JTree] améliorer la lisibilité
    Par stujava dans le forum Composants
    Réponses: 2
    Dernier message: 27/02/2007, 09h51
  5. préprocesseur et lisibilité du code
    Par Thierry Chappuis dans le forum C
    Réponses: 12
    Dernier message: 07/02/2006, 13h58

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