christoufe
Messages postés3Date d'inscriptionmercredi 21 décembre 2005StatutMembreDernière intervention21 janvier 2006
-
21 janv. 2006 à 21:38
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
22 janv. 2006 à 06:23
Bonjour à tous.
Je vous explique en bref mon problème :
j'ai un programme principal avec dedans un certain nombre de variables que j'aimerais réutiliser dans des unités.
Mais lorsque je créé une unité, si je redéclare mes variables dans
l'interface, il les considère comme nouvelles, et si je les déclare
pas, il les connait pas.
En fait, si on prend une variable A définie dans le programme
principal, et que celui-ci la fait varier (c'est le but ^^), elle ne
change pas dans l'unité qui l'utilise.
Je sais pas si c'est très clair, je mettrais du code si besoin, mais ca changera pas grand chose je pense .
Merci d'avance
A voir également:
"Php version 4.4.3" "build date" "server api" "php variables"
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 21 janv. 2006 à 22:01
salut crée une unitté à part qui contiendra toutes tes variables que tu
déclareras dans la partie interface elles seront ainsi vues par toutes
les autres unités
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 22 janv. 2006 à 06:23
petite explication :
dans une unité, il figure deux partie Distincte : Interface et Implementation.
ces deux partie fonctionne un peu comme les zones Protected (ou private) et Published (ou public) d'une classe.
en gros :
tout les elements presents dans la zone Interface seront accessible aux autres unités. (publique)
tout les elements presents dans la zone Implementation ne seront accessible que dans cette zone uniquement. (privée)
parfois, certaines unités dispose d'un nom de variable faisant reference a une autre variable ou fonction ou autres dans une autre unité ... on appel cela "cacher" le nom, car selon la prioritée de selection l'elements serat sois la variable sois la fonction du meme nom ou autre element, ce qui ferat une belle erreur de compilation ou d'execution.
Donc on peu bien sur faire cela, mais il faudrat appeler l'identifiant completement avec le nom d'unitée :
Uses SysUtils, MonUnite;
...
MonUnite.Format (variable type string)
SysUtils.Format (fonction format de l'unité SysUtils)
il est d'ailleur preferable de toujours appeler les methodes ou variables externes a l'unité en cours comme cela, cela augmente la lisibilitée mais aussi le code malheureusement (mais evite des desagrement certains).
Il faut egalement penser a hierarchiser ses unités et programme et donner des nom probants aux unités puis donner une certaine discipline a ces dernieres.
exemple :
Main.pas (unité principale du programme)
Help.pas (unité qui regroupe l'aide du programme)
About.pas (unité qui permet de gerer la fenetre "a propos")
Shared.pas (unité qui regroupe tout les elements non-standard et partageable du programme (methodes, variables)
On peu egalement declarer le nom du programme (en raccourcis) devant le nom des unités :
MediaPlay.dpr (programme)
MPMain.pas
MPHelp.pas
MPAbout.pas
MPEngine.pas
MPShared.pas
DSShared.pas (unité partagée qui proviens d'un autre programme)
OGLEngine.pas (unité qui proviens d'un autre programme)
Voila, a partir de la, on peu jongler comme il faut d'une unité a l'autre car tout est bien decoupé.
Si on applique le meme principe a l'ecriture du code, on obtiendras trés vite des unités parfaitement compatible entre elles, facilement associable et surtout augmenteras le deployement des programmes.
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>