Bonjour,
je crois que le titre en dit très long mais bon ...
Je recherche un identificateur qui serait unique pour chaque classe.
J'ai fait un peu de recherche du côté de ClassInfo mais sans succès.
Merci
Bonjour,
je crois que le titre en dit très long mais bon ...
Je recherche un identificateur qui serait unique pour chaque classe.
J'ai fait un peu de recherche du côté de ClassInfo mais sans succès.
Merci
si tu recherche un identificateur unique pour une instance de ton exe (voir peut etre toute, a condition que l'exe ne soit pas recompilé), tu peux utiliser le ClassType qui est un TClass donc un integer.
En fait ce n'est pas clair : tu veux faire quoi en réalité ?
Un id pour des classes que tu crées ? pour des instances de classes ?
Si tu indiques l'usage que tu en as tu auras des réponses.
Non, pour des classespour des instances de classes ?
1. Numéro pour structure de messagetu veux faire quoi en réalité ?
2. Identifier l'envoyeur d'une requête de forage
3. Identifier l'envoyeur d'une requête de rafraichissement d'une liste de donnée.
Bref, cela ne vous avance pas à grand chose !
Je vais essayer d'être plus clair ...
Je désire obtenir un identifiant (unique sur chaque CLASSE et non sur chaque instance)
Voici 2 exemple plausible pour TMaClasse :
Je pourrais créer un champs de plus dans ma classe de base et l'appeler, par exemple : ClassID et l'utiliser pour différencier chaque classe (Pas chaque instance) mais bon, avant j'aimerais savoir si un tel champs existe déjà dans ClassInfo ou autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //Exemple 1 ref := TMaClasse.Create() Identificateur = ref.ChampIDQueJeCherche //Exemple 2 Identificateur = TMaClasse.MethodeDeClasseQuiRetourneCeQueJeCherche
Voici la solution (fait maison ) que je n'aime pas
En passant, merci guillemouze mais je dois toujours gardé le même identificateur même lors de la recompilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 TClasseDeBase protected fClassID : integer; ... TClasse1 = class(TClasseDeBase) ... constructor TClasseDeBase.Create() ... fClassID = 1234; //Identificateur quelconque ...
salut
si nous avons bien compris tu cherche un identifiant unique
avant de donner une solution finale il faut que l'on connaisse le context
tu peut utiliser le guid
L'ID est une donnée au même titre que les autre propriété si tu as une base de donnée derrière l'identifiant fera parti de la table sous-jacente
si par contre tu n'utilse pas base de donnée voici une methode d'utilisation
@+ Phil
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 TMacLass = Class Private Public class Function ClassId : TGuid; End; ... const ID_MaClass : TGUID = '{7CC7107D-4553-42A0-A320-4E5ACBEE9F77}' ; class Function TMacLass.ClassId : TGuid; begin Result := ID_MaClass; end;
Merci pour votre réponse,
mais cette façon revient à peu près à la solution que j'ai mis précédemment.
Je ne désire pas crée cet ID moi même (c'est déjà comme cela que je fonctionne), j'en recherche un qui serait natif.
Bon, vu le nombre de réponse, je ne crois pas qu'un tel ID existe nativement pour les classes.
Tout de même, merci d'avoir pris un peu de votre temps pour me répondre.
tu peux peut etre tout simplement utiliser les classname ! tout depend des contraintes que tu as derriere
Je ne peut pas utiliser le nom de la classe, désolé
Salut,
J'ai eu une problèmatique du même genre il y a longtemps ou il fallait que j'identifie des versions d'interfaces.Je ne désire pas crée cet ID moi même (c'est déjà comme cela que je fonctionne), j'en recherche un qui serait natif.
La solution de l'époque était de créer un expert qui calculait le checksum de l'interface aprés enregistrement du fichier modifié et coller le resultat dans une constante.
salut
je ne sais pas si cela pourra t'aider mais
il existe une propriété valable a tout les decendants de TComponent
c'est ComponentIndex
celle ci n'est valable qu'au sein d'une forme
@+ Phil
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager