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 :

Récupérer au runtime la liste des composants delphi disponibles


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 706
    Billets dans le blog
    65
    Par défaut Récupérer au runtime la liste des composants delphi disponibles
    Bonjour,

    C'est une petite idée qui me trotte dans la tête depuis un moment (XE4 -> XE7 en fait) et qui depuis revient régulièrement me hanter.

    tout à commencé avec les TADxxxxxxx (anydac) devenant des TFDxxxxxxx (Firedac), puis des migrations BDE et autres -> Firedac
    déclenchement final le Défi Pascal !
    Gexpert nous fournissait une fonction intéressante : le remplacement d'un composant par un autre

    Fonction que je ne retrouve pas dans L'EDI de XE10 suis-je aveugle ?

    j'en arrive à ma question (avant d'éplucher les sources de Gexpert) , titre de mon sujet

    1-Est-il possible de récupérer au runtime (d'une application quelconque) la liste des composants delphi disponibles ?
    2-Question subsidiaire s'il est possible de les récupérer, savoir quelles sont ses dépendances (unités) ?

    Vous voyez où je veux en venir ? un programme qui permettrait de changer un ou plusieurs composants dans les sources (pas et dfm) pour aider les migrations
    est-ce dans le domaine du faisable ? c'est ce que les Questions 1 et 2 pourraient déterminer

    Non, je ne participerais pas au défi (surtout à cause des délais) mais Oui si cela abouti je le partagerais

    Merci de votre lecture

    Serge

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 797
    Par défaut
    Édit: Message totalement hors-sujet , mais je le laisse parce que SergioMaster m'a répondu

    À moins que je n'ai rien compris au truc, mais c'est juste un problème de conception

    Dans le constructeur d'un TCustomForm, il y a un booléen qui permet de savoir si on charge le fichier .DFM associé à la classe ou pas.

    Et ensuite, il y a un mécanisme pour charger le fichier .DFM: c'est la méthode il me semble ReadComponentResFile


    Et d'après mes tests, la forme principale doit obligatoirement avoir un fichier .DFM sinon une exception est levée (il me semble).

    Enfin, tous tes fichiers .DFM se retrouvent non chiffrés dans ton exécutable. Tu peux le voir avec le logiciel Resource hacker (je pense à un truc sale d'ouvrir ton exécutable en binaire et de le parcourir/ modifier à l'arrache)


    Voila, mais travaillant en C++ avec Xe sûrement qu'il y a des différences

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 706
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par foetus Voir le message
    À moins que je n'ai rien compris au truc
    je me suis peut être mal exprimé
    c'est bien sur les sources que je veux modifié pas un programme exécutable.
    Quand je parle de au runtime c'est que je pense à un programme qui interroge je ne sais quoi (d'où la question) pour obtenir la liste des composants installés pour une version particulière de Delphi .
    Disons pour l'exemple les sources du programme à migrer sont en D7, je veux les migrer vers XE10
    a) je balaye les dfm et .pas du programme et récupère les composants utilisés
    b) (ma question) : je balaye les composants installés pour XE10
    .... saisie des transformations à faire
    c) sauvegarde de la source ou autre manip transformation des éléments selon besoin (clauses uses, et composants dans pas et dfm)
    tout ça certainement à grand coup de regexpressions et replacestr
    un truc de ce genre à été proposé à la sortie de XE5 pour remplacer les TADxxxx en TFDxxxxx mais non graphique, à base d'expressions régulière et je ne me souviens plus de quel exe

  4. #4
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    J'ai moi aussi réfléchi à faire un outil de migration.
    Pour commencer, c'était un début de soft pour passer de bde à ADO.
    Ça ne faisait pas tout mais ça mâchait au moins une partie du travail.
    On me laisse malheureusement pas le temps au bureau pour aller plus loin.

    Une remarque tout de même concernant l'outil de migration vers Firedac: il vaut mieux l'oublier :-(
    Ou alors, avec une très grosse sauvegarde du code source et de multiples tests très complets ensuite.
    Ça m'a pourri un gros code source à mon premier essai à cause de nom de composant qui étaient détectés par le système de regex et qui n'avaient rien à voir avec Firedac.
    Disons que ça partait d'une bonne intention mais ça n'est pas assez complet pour être parfait.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 706
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    J'ai moi aussi réfléchi à faire un outil de migration.
    Content de voir que je ne suis pas le seul
    Citation Envoyé par Papy214 Voir le message
    Une remarque tout de même concernant l'outil de migration vers Firedac: il vaut mieux l'oublier :-(
    ....
    Disons que ça partait d'une bonne intention mais ça n'est pas assez complet pour être parfait.
    tout à fait d'accord

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 706
    Billets dans le blog
    65
    Par défaut Je répond à ma première question
    La liste des composants se retrouve dans le Registre (fourre tout Windows)
    bien sûr cela va dépendre des versions et de l'éditeur (donc un peu de constantes à mettre dans mon futur programme)

    Delphi 7 HKEY_CURRENT_USER\SOFTWARE\Borland\Delphi\7.0\Palette
    ...
    XE4 ? HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\11.0\Palette\Cache
    ...
    XE10 HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\17.0\Palette

    j'ai le fond, la forme change elle aussi entre D7 et XE, mais ma première piste est trouvée !

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    un truc de ce genre à été proposé à la sortie de XE5 pour remplacer les TADxxxx en TFDxxxxx mais non graphique, à base d'expressions régulière et je ne me souviens plus de quel exe
    Bonjour,
    il me semble que c'est l'utilitaire refind.exe qui se trouve dans le répertoire \bin du répertoire d'installation de Delphi (http://docwiki.embarcadero.com/RADSt...Ex_Expressions).

    Il est fourni avec les versions supérieures à XE5.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    c'est bien cet outil.
    Mais quand tu as développé tes propres classes et que tu as eu le malheur de les préfixer comme les composants TAD...... , ben le résultat est catastrophique :-)

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 706
    Billets dans le blog
    65
    Par défaut
    Je sais bien que cet outil existe mais mon objectif est d'élaborer un GUI plutôt qu'un outil de ligne de commande
    et surtout plus facile (en essayant d'éviter le problème rencontré par Papy214 )

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2010, 16h40
  2. Réponses: 5
    Dernier message: 09/09/2006, 22h30
  3. actualiser la liste des composants d'un projet
    Par Ndugu dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/09/2006, 17h31
  4. liste des composants installés
    Par sami_c dans le forum ASP
    Réponses: 1
    Dernier message: 18/05/2006, 21h13
  5. [Swing] liste des composants d'un container
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/02/2006, 13h50

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