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

EDI Delphi Discussion :

Option de compilation dans le fichier DPR


Sujet :

EDI Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut Option de compilation dans le fichier DPR
    Bonjour

    Je veux mettre une compilation conditionnelle dans le fichier DPR
    XE2 et XE7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses
    {$ifdef DEBUG}
      FastMM4 in '..\Composants\FastMM4\FastMM4.pas',
    {$endif}
      Forms,
      Vcl.Themes,
      Vcl.Styles,
      //...
    Mais lorsque j'ajoute ou je supprime une unité, l'IDE me supprime systématiquement le {$ifdef} et le {$endif}

    Quelqu'un a t'il une solution ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Cette technique de cela date de l'époque de D3 et D7
    Je voulais même faire une inclusion de DFM selon directive, ça n'a jamais passé

    Je viens de tester, même le simple uses ne passe pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {$IFDEF DEBUG}
      FastMM4,
    {$ENDIF}

    Modifié le DPR manuellement est toujours pénible
    Sur certains projets, j'ai même viré l'utilisation directe de Application par une variable pour éviter qu'il bousille les CreateForm (une MainForm différente selon un paramètre)

    Sinon, Pense que XE2 et XE7 inclus déjà FastMM, il n'y a plus grande raison de l'utiliser !
    Le gestionnaire de mémoire FastMM (Win32 et Win64)

    Si c'est pour la surveillance de fuite mémoire, ajoute ceci comme dernier bloc de ton main
    C'est la même chose que FastMM mais directement inclus dans le nouveau* gestionnaire de Delphi
    (nouveau* en 2007)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      ... 
      Application.Run;
     
    {$IFDEF DEBUG}
    {$WARN SYMBOL_PLATFORM OFF}
      System.ReportMemoryLeaksOnShutdown := DebugHook <> 0;
    {$WARN SYMBOL_PLATFORM ON}
    {$ELSE DEBUG}
      System.ReportMemoryLeaksOnShutdown := False;
    {$ENDIF DEBUG}
    end.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Bonjour

    On a déjà le fastmm de xe2 et autres, mais je me suis aperçu qu'il était moins précis de fastmm4, je n'arrive à lui faire générer le fichier de rapport.

    Bonne fêtes

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par dlambert Voir le message
    On a déjà le fastmm de xe2 et autres, mais je me suis aperçu qu'il était moins précis de fastmm4, je n'arrive à lui faire générer le fichier de rapport.
    Effectivement, les options étendues (FullDebugMode, LogErrorsToFile, etc) ne sont présentes que dans la version complète (http://sourceforge.net/projects/fastmm/)...
    http://docwiki.embarcadero.com/RADSt...e_m%C3%A9moire
    Philippe.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Merci Philippe,

    j'avais lu ça quelque part.

    Mais peut' on alors intégrer la version complète (que j'utilise déjà) avec la solution de ShaiLeTroll pour la compilation conditionnelle ?

    Dominique

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par dlambert Voir le message
    mais je me suis aperçu qu'il était moins précis de fastmm4, je n'arrive à lui faire générer le fichier de rapport.
    Moins précis, je ne peux pas dire
    Mais il génère la place un ShowMessage qui contient la fuite :

    Code ReportMemoryLeaksOnShutdown : 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
    17
    18
    19
    ---------------------------
    Unexpected Memory Leak
    ---------------------------
    An unexpected memory leak has occurred. The unexpected small block leaks are:
     
     
     
    13 - 20 bytes: TFileStream x 1
     
    29 - 36 bytes: UnicodeString x 1
     
     
     
    The sizes of unexpected leaked medium and large blocks are: 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092
     
     
    ---------------------------
    OK   
    ---------------------------





    Essaye ceci à condition d'avoir FastMM4 enregistré dans les chemins d'environnement ou de recherche du projet

    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
     
    program ZooShaiVCL;
     
    uses
      FastMM4Wrapper,
      Forms,
      Vcl.Themes,
      ...
     
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.CreateForm(..., ...);
      Application.Run;
    end.
    Directement dans le même dossier que FastMM4.pas, tu ajoutes l'unité FastMM4Wrapper.pas
    Cette indirection ne sembler pas poser de problème à FastMM4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    unit FastMM4Wrapper;
     
    interface
     
    {$IFDEF DEBUG}
    uses
      FastMM4;
    {$ENDIF}
     
    implementation
     
    end.
    Ce me génère toujours un message box, légèrement différent (signe que c'est bien celui de FastMM4)

    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
    17
    18
    19
    20
    21
    22
    23
    ---------------------------
    ZooShaiVCL.exe: Memory Leak Detected
    ---------------------------
    This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):
     
     
     
    13 - 20 bytes: TFileStream x 1
     
    29 - 36 bytes: UnicodeString x 1
     
     
     
    The sizes of leaked medium and large blocks are (excluding expected leaks registered by pointer): 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092, 1114092
     
     
     
    Note: To obtain a log file containing detail on memory leaks, enable the "FullDebugMode" and "LogMemoryLeakDetailToFile" conditional defines. To disable this memory leak check, undefine "EnableMemoryLeakReporting".
     
     
    ---------------------------
    OK   
    ---------------------------

    j'ai tenté de définir "FullDebugMode" est là le module ne démarre qui si l'on déploie dans le même répertoire la DLL FastMM_FullDebugMode.dll (c'est expliqué dans le commentaire de FastMM4Options.inc)
    Et cela génère un énorme fichier ZooShaiVCL_MemoryManager_EventLog.txt de 326 Ko !
    Le fichier donne un extrait de 256 octet de chaque bloc mémoire fuyant !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Merci ShaiLeTroll,
    le coup du wrapper, ça marche super bien.

    Mais l'unité je la met dans le répertoire source, par ce que justement sur le serveur de déploiement, les composants FastMM n'existent pas et ne doivent pas y être installés, une erreur de manip est vite arrivée et après le déploiement, c'est la cata :-(

    Je laisse la discussion encore ouverte jusqu'à la fin de l'année :-)

  8. #8
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par dlambert Voir le message
    Mais l'unité je la met dans le répertoire source, par ce que justement sur le serveur de déploiement, les composants FastMM n'existent pas et ne doivent pas y être installés, une erreur de manip est vite arrivée et après le déploiement, c'est la cata :-(
    Je pense que le serveur de déploiement doit utiliser le mode de compilation Release, donc l'option de compilation DEBUG n'est pas définie ; aucune inclusion d'unité de FastMM4 ne sera réalisée, et les unités de la version par défaut de FastMM seront utilisées.
    L'unité FastMM4Wrapper par contre devra être présente, quel que soit l'option de compilation retenue...
    Philippe.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Oui, Philippe, c'est bien ça.

    Sauf que des fois, des gens passent en mode debug, par ce qu'ils ne savent pas ce qu'est le mode debug / release.
    docn, non pas fastmm4 sur le serveur de compil.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Comme promis, je ferme le fil de cette discussion.


    Bonne année à toutes et à tous remplis de plein de ligne de code :-)

    Dominique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Option de compilation dans les fichiers *.dfm
    Par j.p.mignot dans le forum EDI
    Réponses: 12
    Dernier message: 21/08/2014, 09h30
  2. Comment déclarer TIBDatabase dans le fichier .dpr
    Par madoui20032003 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/04/2013, 16h17
  3. Erreur de compilation dans les fichier d'en-tête
    Par belgariel dans le forum Linux
    Réponses: 5
    Dernier message: 02/03/2010, 10h05
  4. Réponses: 3
    Dernier message: 05/09/2008, 14h00
  5. Objet avec options de compilation dans un makefile
    Par z980x dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 27/09/2006, 07h17

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