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 :

compilation paquets d'execution et occupation mémoire


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut compilation paquets d'execution et occupation mémoire
    Bonjour

    J'ai créé un paquet d'exécution "plugin.bpl" qui dans la clause requires contient aussi d'autres paquets d'exécution (VCL Delphi, JEDI, DevExpress, etc...). J'en ai un autre "common.bpl" qui est le paquet principal de mon application et qui en gros partage des fonctions et variables globales entre l'application et les plugs-ins.

    Ma question est la suivante : puis-je compiler "plugin.bpl" mais en faisant en sorte que certains paquets dans sa clause requires soit intégrés dans mon "plugin.bpl" de telle sorte que je n'ai pas besoin de les fournir avec mon application. Je souhaite fournir uniquement les paquets VCL de delphi, common.bpl et plugin.bpl.

    Quelqu'un me t-il m'éclairer là dessus car apparament tout paquet d'exécution qui fait appel à d'autres paquets d'execution doit impérativement les trouver son chargement.

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par ALEX77
    puis-je compiler "plugin.bpl" mais en faisant en sorte que certains paquets dans sa clause requires soit intégrés dans mon "plugin.bpl" de telle sorte que je n'ai pas besoin de les fournir avec mon application.
    Non, tu ne peux pas.

    Tu es obligé, pour distribuer un paquet d'exécution, de distribuer avec tous les paquets d'exécutions dont il dépend, et cela récursivement.

    C'est intrinsèquement nécessaire au bon fonctionnement des paquets et du partage des RTTI (qui est la force des paquets).

  3. #3
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    ah bah zut alors

    Merci sjrd pour ta réponse rapide

    Si je demande ça c'est parce qu'en fait voilà la form principale de mon application contient des composants DevExpress : une barre de menu, un TreeList, une barre d'état et une barre de navigation et lorsque je l'exécute, dans le gestionnaire de programme je suis à 17 Mo ! rien que ça. Je rappelle que l'application est contruiste avec le paquet d'execution common.bpl que se partage l'application et les plugins.

    Lorsque je minimize mon application et que je la restore, la mémoire utilisée passe à 2 ou 3 mo. On est donc passé de 17 à 2 Mo ?

    Quelqu'un (ou toi sjrd) peut me dire qu'est-ce qui se passe exactement pour qu'on ai autant de mémoire occupée dès le démarrage ? Peut-on en libérer de la mémoire pour passer à 2 ou 3 mo comme lorsqu'on minimize l'application mais sans avoir à la minimizer ?

    Comme mon projet va etre essentiellement construit autour de plugins tournant autour d'un paquet d'execution principal, cela est déterminant pour la suite du développement.

    Merci pour vos réponses

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 646
    Points
    646
    Par défaut
    Citation Envoyé par ALEX77
    ah bah zut alors
    Peut-on en libérer de la mémoire pour passer à 2 ou 3 mo comme lorsqu'on minimize l'application mais sans avoir à la minimizer ?
    avec cette procédure tu as l'équivalent en terme de libération mémoire de la minimisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure FreeMemory;
    var
      MainHandle : THandle;
    begin
      MainHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE,
    GetCurrentProcessID);
     try
      SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF);
     finally
      CloseHandle(MainHandle);
     end;
    end;

  5. #5
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    Merci exoseven pour ton code je l'ai testé et ça a fonctionné !

    Mais un autre problème persiste, lorsque j'execute mon application Delphi se bloque. Obligé de le killer. Par contre j'arrive à exécuter mon application sans problème directement par l'exécutable.

    J'ai fait des recherches sur Google avec plusieurs mots clefs "delphi freeze packages runtimes" et je n'ai rien trouvé de concret.

    S'agit-il d'un beug lié à Delphi ou bien à autre chose ?

  6. #6
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Il m'arrive d'avoir ce problème, en effet, avec Delphi 2005 update 3, et en travaillant avec des paquets d'exécution.

    Il semble que Delphi se confonde dans ses DCU de débogage. Je parviens parfois à m'en tirer en reconstruisant tous les projets de mon groupe de projet. Mais parfois c'est aléatoire, et ça finit par refonctionner au bout d'un moment.

  7. #7
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    Salut Sjrd

    Moi je suis en Delphi 7 Entreprise.

    En faisant quelques petites recherches sur les paquets sur le forum je suis finalement tombé sur un topic dans lequel un des participants dit qu'en fait cela viendrait du debugger de Delphi et qu'il vaut mieux le désactiver.

    En ce qui me concerne, lorsque je lance mon application la première fois, elle démarre correctement. Je la quitte. Je la relance une deuxième fois toujours depuis Delphi et là... gelée, delphi aussi. Seul moyen, gestionnaire de tache et Terminer le processus !

    J'ai donc désactivé le débugger dans les options de delphi et depuis cela semble résolu et le problème n'est par réapparu.

    Toujours est-il que ce problème est assez curieux car je pense tout de même avoir compris les bases pour les paquets d'execution.

    J'espère que tu pourras toi aussi regarder de ton côté pour ta version 2005.

  8. #8
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Désactiver le débuggueur ? Diantre de fichtre ! Jamais je ne ferais ça
    Comment peut-on espérer parvenir à la fin d'un projet sans débuggueur ?

  9. #9
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par sjrd
    Désactiver le débuggueur ? Diantre de fichtre ! Jamais je ne ferais ça
    Comment peut-on espérer parvenir à la fin d'un projet sans débuggueur ?
    en évitant de faire des erreurs

    Moi aussi je me suis dit la même chose mais je crois que de toute façon on en peut pas débogger un paquet d'execution ou j'me trompe ?

  10. #10
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par ALEX77
    en évitant de faire des erreurs
    Il est impossible de développer un projet un peu pas trop petit sans faire d'erreur. Et le pas-à-pas est le meilleur moyen de les repérer, pour les corriger.
    Citation Envoyé par ALEX77
    Moi aussi je me suis dit la même chose mais je crois que de toute façon on en peut pas débogger un paquet d'execution ou j'me trompe ?
    Si, on peut. Il suffit de renseigner le champ Application Hôte dans Exécuter|Paramètres... lorsque ton paquet est activé. C'est comme pour les DLL.

  11. #11
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    Je pensais à un truc : lorsqu'on est sous l'IDE, on peut très bien décocher la "case construire avec les paquets d'execution" le temps de tester et de debogger le programme et lorsqu'on voudra le déployer, recocher la case et le constuire. On pourrait donc laisser le débogger activé comme avant.

    C'est juste que si je fais appel à d'autres paquets d'execution de manière dynamique dans mon application poserait peut être problème...

    Qu'est ce que tu en pense ? Parce que bon tu dis que ça te fais ce problème et ça n'a pas l'air de t'inquiéter plus que ça... être obligé de killer delphi à chaque fois. non merci.

  12. #12
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu ne peux pas faire autrement que d'utiliser (et de construire avec) les paquets d'exécution si tu utilises des paquets chargés dynamiquement (façon plug-in).

    Pour ce qui est de m'inquiéter... Bien sûr ça m'inquiète, et je serai content si un jour j'ai un Delphi plus récent qui ne provoque pas le problème
    Mais ça n'est pas bloquant. Ca me le fait deux à trois fois de suite, jusqu'à ce que je parviennes à lui faire resynchroniser ses infos de débogage. Et après je suis tranquille pour plusieurs jours.
    Et ça ne me gêne que pour le projet dans lequel j'utilise des paquets d'exécution, donc 1 sur 2 gros, avec plusieurs petits à côté.

    Donc c'est bug sérieux, mais pas bloquant. Pour tous les avantages qu'il y a à côté dans Delphi, je fais avec

  13. #13
    Membre régulier Avatar de ALEX77
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 138
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par sjrd
    Mais ça n'est pas bloquant.
    ...
    Donc c'est bug sérieux, mais pas bloquant. Pour tous les avantages qu'il y a à côté dans Delphi, je fais avec
    Pas bloquant ? Moi c'est carrément Delphi et mon application qui sont bloqués !

    Mais bon comme tu dis, pour tous les avantages de Delphi, ça vaut le coup

Discussions similaires

  1. [Ocaml] Compilation d'un executable windows avec Ocaml
    Par Diegoooowwww dans le forum Caml
    Réponses: 19
    Dernier message: 02/03/2009, 13h21
  2. Paquetage bien compilé mais non executé.
    Par Flodelarab dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/12/2008, 20h23
  3. configure: error: C compiler cannot create executables
    Par vincent_roye dans le forum Réseau
    Réponses: 9
    Dernier message: 01/08/2008, 07h48
  4. Réponses: 8
    Dernier message: 07/02/2007, 15h23
  5. Executable sans les paquets d'executions
    Par schneed dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/07/2006, 14h22

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