Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2901 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Les Classes :-)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les Classes :-)

n°862662
Inekman
Posté le 01-10-2004 à 23:42:32  profilanswer
 

Salut les amis,
 
Bon, il est temps pour moi d'utiliser les classes pour passer à des choses  nouvelles...bonne résolution n'est-ce pas ;)
 
Première confrontation, premier problème.  
 
Soit une classe TMaClasse. Sans aller trop loin, on va dire qu'elle contient 2 variables Var1 et Var2 de type String.  
 
Bon maintenant grosse question existentielle : Je met un bouton sur ma fiche et à l'événement OnClick, je met cela :
 


procedure TfrmTest.btTestClick(Sender: TObject);
var
    aTest: TMaClasse;
begin
 
    aTest := TMaClasse.Create;    
    Showmessage('Objet créé');
    aTest.Free;
end;


 
Donc à partir de là, je peux accéder au contenu de mon objet aTest, c'est à dire aTest.Var1 ou aTest.Var2. Ma question est donc, est-ce que je peux y accéder à partir de n'importe quel endroit de mon programme ? A mon avis non, car l'instance se trouve dans la procédure btTestClick.
 
Dans ce cas, je voudrai savoir comment utiliser les classes dans le cadre d'un programme qui, par exemple, ouvre un fichier, charge des données à partir de celui-ci et qu'ailleur dans le programme on utilise ces données chargées...
 
Moi jusqu'au jour d'aujourd'hui j'utilise des variables globales dans lesquelles je met tout ce que je veux et que je peux récupérer à tout moment n'importe où dans le programme.
 
C'est cet aspect que j'arrive pas à comprendre avec les classes... :??:  
 
A moins que la solution se trouve dans la déclaration d'un objet de ma classe dans les variables globales du programme ??
 
Beaucoup de questions pour lesquelles j'attends une réponse de votre part.
 
Merci à tous.
 
Inekman.


Message édité par Inekman le 01-10-2004 à 23:42:54
mood
Publicité
Posté le 01-10-2004 à 23:42:32  profilanswer
 

n°862901
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 15:39:37  profilanswer
 

En Delphi, une variable d'instance de classe est un pointeur.
aTest n'est donc pas l'instance de la classe mais un pointeur vers cette instance.
Ton instance existe tant que tu ne fais pas le Free dessus. Dans ce cas-ci tu détruis l'objet juste après sa création, donc il n'est pas utilisable ailleurs.
Mais tu pourrais par exemple faire :
UnObjet := aTest;
avec UnObjet qui est déclaré en global, ou dans la Form.
Si tu détruits aTest le pointeur qui est dans UnObjet ne sera plus valide par contre (vu qu'ils pointaient tous deux vers la même chose). C'est comme ça qu'on attrappe des "Access violation xxx at address yyy" :D

n°862911
Kyle_Katar​n
Posté le 02-10-2004 à 16:04:34  profilanswer
 

Juste un conseil qui un jour te sauvera la vie, utilise FreeAndNil(aTest) plutôt que aTest.free

n°862915
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 16:10:34  profilanswer
 

Ça n'aidera pas dans le cas où plusieurs variables pointent vers un même objet...

n°862958
Inekman
Posté le 02-10-2004 à 17:29:28  profilanswer
 

Donc, je récapépète et vous me dites si j'ai compris ou si je suis à côté de la plaque :)
 
Si je déclare une variable aTest, qui est un pointeur vers une instance de ma classe, en global alors je pourrai accéder à celle-ci partout dans mon programme.
 
Dans ce cas, une question me taraude...Pourquoi on entends des personnes dire que les variables globales c'est caca ?

n°862959
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 17:31:06  profilanswer
 

Ça compte pas vraiment comme des variables globales ça je pense.

n°862960
Inekman
Posté le 02-10-2004 à 17:34:12  profilanswer
 

en fait, elles sont nommées à la création du logiciel mais pas vraiment créées c'est ça ?  
 
Elles seront réellement créées quand on fera  
aTest := TMaClasse.Create;
 
c'est bien ça ?

n°863012
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 19:32:37  profilanswer
 

Oui, mais ce que je voulais dire c'est que quand on parle de variables globales qui sont pas bien, on désigne plutôt les variables ordinaires, comme des entiers, chaînes etc.
Il faut bien que les objets "parents" soient définis quelque part (la fenêtre principale, l'objet qui gère les autres objets dans ton soft, etc.)


Message édité par antp le 02-10-2004 à 19:32:52
n°863035
Inekman
Posté le 02-10-2004 à 20:02:37  profilanswer
 

aaaaahhhh ben voilà, tu me rassures :D
 
Tu sais quoi, j'ai utilisé un logiciel qui s'appelle Ant Renamer intensivement ces derniers jours. Qu'est ce que ça m'a fait bizarre (surtout plaisir) quand j'ai vu que c'était toi son papa. Vraiment magnifique ce logiciel, chapeaubonnet bas m'sieur. ;)

n°863040
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 20:10:54  profilanswer
 

:D
En plus les sources Delphi sont disponibles, donc tu peux voir comment j'ai fait avec les classes et objets en global :whistle:

mood
Publicité
Posté le 02-10-2004 à 20:10:54  profilanswer
 

n°863206
Inekman
Posté le 02-10-2004 à 23:01:23  profilanswer
 

ah ben crois-moi que je vais le dévorer ton code source. J'adore la programmation, ce qu'on fait en cours c'est pas tip top alors je m'amuse chez moi, vive la prog ! et vive les programmeur comme toi qui nous apprennent des éléments de programmation..ça tue :)


Message édité par Inekman le 02-10-2004 à 23:01:40
n°863226
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-10-2004 à 23:26:52  profilanswer
 

Au cours on apprend surtout à apprendre ;)
On apprend énormément en programmant par soi-même, et ensuite au boulot :D (d'après ma maigre expérience)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°864169
sunboy
Posté le 04-10-2004 à 14:14:16  profilanswer
 

hahahahahah juste en decu de implentation  
uses nom de l'uniter ou ta class il y est

n°864174
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-10-2004 à 14:16:16  profilanswer
 

sunboy a écrit :

hahahahahah juste en decu de implentation  
uses nom de l'uniter ou ta class il y est


 
Et en français ça donne quoi ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°864177
sunboy
Posté le 04-10-2004 à 14:18:11  profilanswer
 

quoi en française je suis mauvais , je t'indique l'astuce c'est tout

n°864184
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-10-2004 à 14:21:31  profilanswer
 

- Ta "phrase" est pas vraiment compréhensible
- Ça n'a pas grand chose à voir avec la question que posait l'auteur, je ne vois pas où est l'"astuce"


Message édité par antp le 04-10-2004 à 14:23:06

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°864187
sunboy
Posté le 04-10-2004 à 14:24:10  profilanswer
 

j'en déjas fait des classes achaque unite je suis obliger d'implenté la source de la classe comme je pourait l'appeller ou je veux ,

n°864210
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-10-2004 à 14:56:13  profilanswer
 

Il parlait pas de rendre la classe connue de toutes les units, mais de pouvoir utiliser l'instance de la classe (l'objet) de n'importe où.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°864434
Inekman
Posté le 04-10-2004 à 17:58:56  profilanswer
 

t'as tout compris antp ;-), t'as pas tout compris sunboy :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Les Classes :-)

 

Sujets relatifs
[C#] Déclarer un array d'instances de classes ?Classes et Unit
répertoire des classesDu reverse engineering pour les classes Php ?
[java] PowerAMC et diag de classes[Divers] PowerAMC et Diag de classes
Lister toutes les fonctions et classes d' un moduleSupprimer un objet au moyen de 'this' ? (Concerne aussi les classes)
[Java] Je cherche un soft gratuit d'analyse des classesVariables dans les classes (accéder à une autre classe)
Plus de sujets relatifs à : Les Classes :-)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)