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

Langage Delphi Discussion :

Structure plugin sans plugin


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut Structure plugin sans plugin
    Bonjour,

    Je voudrais savoir s'il est possible de programmer son application de façon à avoir une structure type application avec plugin, sans pour autant utiliser de véritable plugin ? Ce que je veux dire: je voudrais ajouter des "modulariser" mon application tout en la gardant monolithique. Par ex. je voudrais créer plusieurs fiches d'un certain type, avec les mêmes fonctions, et pouvoir afficher n'importe laquelle au choix, sans pour autant ajouter les unités dans la clause "uses" de chaque autre fiche qui pourrait les utiliser. Mais je ne vois pas trop comment faire, il faudrait une phase d'initialisation au lancement du programme pendant laquelle toutes les fiches de ce type soient "enregistrées" (dans le sens "registered") peut-être au sein d'une liste quelconque, et qu'ensuite quand une unité a besoin d'accéder à l'une de ces fiches, elle puisse le faire en se référant à la liste...
    Bref, je ne sais pas si je suis bien clair, j'ai l'impression que plus j'essaye d'expliquer plus je m'enfonce... alors si vous avez compris et que vous avez une piste, faites-moi signe ;-)

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Non effectivement c'est loin d'être clair. On parle d'abord de plugin puis de modules pour finir sur les fiches sans que je vois le lien entre les trois.

    Est-ce que tu pourrais réexpliquer ce que tu veux faire exactement ?

    Merci.

  3. #3
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut
    salut ,
    je ne comprends pas trop non plus, mais si tu parle de modulaire c'est a dire que ton application est destinée a recevoir des modules supplémentaires ?

    j'ai géré quelque chose comme çà en créant une dll par module, mon application se charge de les traiter si elles se trouvent présente avec le programme.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    En fait j'ai commencé à programmer une application avec des plugins (packages bpl); et puis plus ça va, plus je me rends compte que la gestion des "runtimes" à distribuer devient compliquée, que ça augmente énormément le poids du projet, et que ça devient lourd quand il y a une mise à jour d'un composant ou passage à une nouvelle version de Delphi; et comme les seuls plugins seront développés par moi, il n'y a que peu d'intérêt à faire comme ça !
    Je voudrais donc "réintégrer" ce que je mettais dans les plugins à l'intérieur de mon application, tout en gardant la modularité, c'est-à-dire en n'ayant pas à déclarer des tas de "uses" dans chaque fiche qui utilise les "anciens plugins".
    Mais bon, je suis en train de tester une solution plus ou moins tarabiscottée, on verra bien...

  5. #5
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    Bonjour,

    tout d'abord je trouve dommage que tu change de méthode, car c'est vrai que le déploiement d'une application modulaire nécessite un peu d'organisation et que plus ce qui est modifié se trouve en bas de l'édifice, plus le déploiement est lourd, mais par contre pour tout ce qui est modification de ton interface, style la virgule que l'utilisateur ne veut pas à cet endroit, le déploiement est très léger.
    Enfin, c'est ton choix. Alors le plus simple à mon avis c'est de faire une classe qui va gérer l'affichage de tes différentes forms. Cette classe aura besoin d'avoir la liste de toute les unités dans ses uses, mais elle seule en aura besoin. Elle publiera par exemple une méthode showform( aClassName:string) qui se chargera d'instancier le bon formulaire, un peu comme ceci (non testé et il est tard mais c'est pour te mettre sur la piste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function MaClasse.ShowForm( aClassName:string):integer;
    var
      wClasse : TPersistentClass;
      wForm   : TForm;
    begin
      wClasse := GetClass( aClassName);
     
      wForm := TFormClass( wClasse).Create( Application);
      Result := wForm.ShowModal;
    end;
    Bien entendu il faut que ta classe soit Registré au démarrage de l'application.

    @++
    Dany

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Par défaut
    C'est vrai que l'application principale ne fait que 240 Ko et les plugins en moyenne 50 Ko, et ça peut être un argument pour l'utilisateur quand il faut mettre à jour un ou quelques plugins seulement; mais derrière il doit traîner une petite dizaine de Mo de bpls :-\ Et il faut gérer: ne rien oublier lors de la fabrication de l'installeur, prévoir pour chaque plugin les évolutions possibles pour fournir les bons bpl de façon à ne pas être obligé de tout recompiler/redistribuer si un composant n'était pas inclus dès le départ, éventuellement écrire un outil de téléchargement/mise à jour automatique des plugins, ou au moins mettre une page web en place pour permettre le téléchargement des différents plugins - ce qui complique la tâche pour l'utilisateur, et puis la mode est aux applications "portables" qui ne nécessitent qu'un exe, etc.
    Bref, je vais voir si je peux m'en sortir, sinon je continuerai avec mes plugins actuels. Mon idée pour l'instant est de me baser sur TDataModule pour créer chaque modèle de plugin, et d'hériter ensuite chaque plugin de cette base. A la création du datamodule, j'ajoute une référence dans un TList qui sert de gestionnaire. Mes premiers essais ont l'air concluants, même si ce n'est certainement pas très "pro".

Discussions similaires

  1. Ganymede - Ajout de plugin sans connexion Internet
    Par klouhkpoum dans le forum Eclipse
    Réponses: 5
    Dernier message: 07/04/2009, 19h41
  2. Réponses: 5
    Dernier message: 24/02/2009, 09h45
  3. Jouer un Son simple et sans plugin ?
    Par xxkirastarothxx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/12/2008, 17h09
  4. plugin sans droits d'administration
    Par zais_ethael dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 21/11/2007, 11h43
  5. [W3C] Lire fichier *.mid sans plugin midi ?
    Par Lareine dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 14/11/2005, 13h23

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