begin process at 2010 02 10 12:12:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

J'AI BESOIN D'AIDE !!!! :O

 > 

Laisons croisées - comment structurer mes fichiers et classes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Laisons croisées - comment structurer mes fichiers et classes

dimanche 29 mai 2005 à 16:52:58 | Laisons croisées - comment structurer mes fichiers et classes

Millenod

Bonjour,

Je me retrouve face à un petit problème.
J'ai un project avec une 20aine de classes, sur une même unité.
Or ces classes étant dépendantes les unes des autres, j'obtiens souvent le message d'erreur "liaisons croisées" dans mes clauses uses.

Comment m'en sortir?

Voici un exemple de mes structures :

---
unit u_main;

interface

Type
  TMainClass = class
  Public
    Object1 : TObject1;
    Object2 : TObject2;
  End;
----

unit u_object1;
interface

uses
  u_main;

Type
  TObject1 = class;
  Protected
    Parent : TMainClass;
  Public
    Constructur Create(aParent : TMainClass);
  End;
----

unit u_object2;
interface

uses
  u_main;

Type
  TObject2 = class;
  Protected
    Parent : TMainClass;
  Public
    Constructur Create(aParent : TMainClass);
  End;
---


la seule solution que j'envisage serait de dériver TObject1 et TObject2 d'une même classe, comme ci dessous :

---
unit u_main;

interface

uses
  u_object1, u_object2;

Type
  TMainClass = class
  Public
    Object1 : TObject1;
    Object2 : TObject2;
  End;
----

unit u_object1;
interface

uses
  u_ObjDeriv;

Type
  TObject1 = class(TObjDeriv)
  ..
  End;
----

unit u_object2;
interface

uses
  u_ObjDeriv;

Type
  TObject1 = class(TObjDeriv)
  ..
  End;
----

unit u_ObjDeriv;

interface

uses  u_main;

type
  TObjDeriv = class
  Protected
     FParent : TMainClass;
  Public
    Constructor Create(aParent : TMainClass);
  End;
---


y'a-t-il une autre solution à envisager?

dimanche 29 mai 2005 à 22:10:11 | Re : Laisons croisées - comment structurer mes fichiers et classes

WhiteHippo

Membre Club
Il me parraitrait plus logique de regrouper tes classes dans une unique unité. Vouloir à tous prix créer une unité par classe (pour des raisons de clarté, ou pour tout autre raison...), ce n'est pas forcément judicieux. Dans l'exemple que tu donnes, j'aurais tout regroupé dans une unité ainsi :

Type
  // Prédéfinitions des classes
  TObject1 = class ;
  TObject2 = class ;

  TMainClass = class
  Public
    Object1 : TObject1;
    Object2 : TObject2;
  End;

  TObject1 = class
  end ;

  TObject2 = class
  end ;
 


Cordialement.


Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
dimanche 29 mai 2005 à 22:13:50 | Re : Laisons croisées - comment structurer mes fichiers et classes

Millenod

Tout regroupé, ca marche...
le défaut est que mon fichier pèse déjà +600ko (j'ai énormément de classes, assez importantes), et qu eje trouve ca un peu embettant, et finis par être "confus".

J'essaye juste de rendre mon code plus clair.


en tt cas merci bcp pour ta réponse

lundi 30 mai 2005 à 16:54:40 | Re : Laisons croisées - comment structurer mes fichiers et classes

WhiteHippo

Membre Club
Attention, le fait de regrouper les classes ensembles était lié à l'exemple donné, maintenant si ton fichier .pas est trop gros à ton goût tu peux toujours retirer des classes judicieusement. Le tout c'est de ne pas avoir des références circulaires entre deux classes (Références mutuelles entre deux classes) dans des unités séparées.


Cordialement.


Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...


Cette discussion est classée dans : end, class, unit, tmainclass, tobject1


Répondre à ce message

Sujets en rapport avec ce message

plusieurs forms dans une unité [ par Guillemouze ] Salut a tous,j'ai une question toute bete : est il possible de mettre plusieurs forms dans une unité?du genreunit unit1;interfacetype    Tfrm1 = class Problème de declaration de class entre 2 unit [ par akhria ] Salut, j'ai un problème, j'ai 2 unit liées -dans Unit1 je lie l'unit2 dans interface-dans mon Unit2 je lie l'unit1 dans implementation et je declare u Les TEdits dans une Scrollbox [ par m_cyril1 ] Pour des faire un affichage, à chaque fois que je rentre un chiffre, je créé des TEdit dans une ScrollBox, avec le code suivant  :Procedure TCalcul.Af Naviguer dans un tableau d'objets [ par Inconnu Anonyme ] Bonjour. Voila je fais un petit agenda électronique. Il consiste a en ajouter des personnes avec toutes les informations : nom , prenom, numero tel et Probleme de stream [ par ewertheimer ] Voila en faites je suis en train de creer un logiciel ou on charge des image dans un TImage et l'on envoie ensuite la photo par stream. Mon probleme : un handle capricieux ! [ par askil2000 ] Bonjour, tout le monde ... C'est encore moi, je pose beaucoup de questions ses temps-ci mais toujours pour la bonne cause. Je voulais remercier Master Enregistrer et ouvrir "détails" [ par darky93 ] J’ai Réussit à trouver un programme dans lequel il y avait Enregistrer et Ouvrir  mais pour une StringGrid. Je l’ai bidouillé  et j’ai "regroupé" mes créeation de composant [ par mathieu57100 ] bonjour,j'ai suivis un tuto pour la création de composant, un label qui ressemble à un lien hypertexte et qui lance soit le navigateur par défaut soit récupérer la valeur d'un champ dbgrid dans tedit d'une autre mdi enfant [ par sylviecl ] Bonjour,J'utilise des fenêtres mdi (menu principal : form parent, et enfant : liste des interventions(form child1), liste des clients (form child 2) e Question sur TStream, TPersistent [ par Andalarius ] Bonjour à tous, Voici ma situation : Je désire écrire les objets complexes (contenant différents objets eux-mêmes ou des listes d'objets) dans un fi


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 29,047 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales