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

FastReport Discussion :

[FastReport 4.12.2]Pb fuite mémoire


Sujet :

FastReport

  1. #1
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 215
    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 215
    Points : 2 303
    Points
    2 303
    Par défaut [FastReport 4.12.2]Pb fuite mémoire
    Bonjour,

    je dois faire une édition avec Fastreport depuis une applicaiton Intraweb. Je m'aperçois que le simple fait de poser un TFrxReport sur le UserSessionUnit provoque des fuites mémoires. Est-ce que quelqu'un a eu ce problème ? Comment peut-on le résoudre ?

    @++
    Dany

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    j'ai a peu prés fait ce genre de chose sans fuite mémoire (XE4,Intraweb 14.0.22 , fastReport 4.14.2) .
    Pour cela , le frxReport (et toutes les liaisons data d'ailleurs) était dans un DataModule

    Code datamodule : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    unit DataModuleUnit;
    
    interface
    
    uses
      Forms,
      SysUtils, Classes, IniFiles,
      uADStanIntf, uADStanOption, uADStanError, uADGUIxIntf,
      uADPhysIntf, uADStanDef, uADStanPool, uADStanAsync, uADPhysManager,
      uADGUIxFMXWait, uADStanParam, uADDatSManager, uADDAptIntf, uADDAptManager,
      uADCompClient, Data.DB, uADCompDataSet, uADCompGUIx, uADPhysIB,
      uADGUIxFormsWait, frxClass, frxExportPDF, frxDBSet;
    
    type
      TDatas = class(TDataModule)
        Base: TADConnection;                      /// connexion à la base
        ADPhysIBDriverLink1: TADPhysIBDriverLink; /// Driver (Firebird)
        ADGUIxWaitCursor1: TADGUIxWaitCursor;     /// curseur
        QLModeles: TADQuery;                      /// Requete Liste modèles
        ADTransaction1: TADTransaction;           /// transaction
        QModele: TADQuery;                        /// Requete Modele
        QMarques: TADQuery;                       /// Requete Lignes produits
        QAssortiments: TADQuery;                  /// Requete Assortiments
        Stocks: TADQuery;                         /// Requête Stocks
        Q2Print: TADQuery;                        /// Requête Stocks Dispo pour Edition
        frxReport1: TfrxReport;                   /// Report
        frxDBDataset1: TfrxDBDataset;             /// Liaion Q2Print Report
        frxPDFExport1: TfrxPDFExport;             /// Export Rport en PDF
        QUser: TADQuery;                          /// Requête Utilisateur (login)
        procedure DataModuleCreate(Sender: TObject);
        procedure DataModuleDestroy(Sender: TObject);
        procedure frxPDFExport1BeginExport(Sender: TObject);
      private
      public
      end; /// Module de Données
    
    function Datas: TDatas;
    
    implementation
    
    {%CLASSGROUP 'Vcl.Controls.TControl'}   // important pour fastreport
    
    {$R *.dfm}
    
    uses ServerController;
    {$REGION 'Documentation'}
    {*------------------------------------------------------------------------------
      Passage du paramètre
    
      @return TDatas
    ------------------------------------------------------------------------------*}
    {$ENDREGION}
    function Datas: TDatas;
    begin
      result:=Usersession.IWDatas;
    end;
     
    ....

    Code UserSessionUnit : 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
    24
    25
    $REGION 'Documentation'}
    {*------------------------------------------------------------------------------
      Création de la session utilisateur
      @param Sender   TIWUserSession   (TIWUserSessionBase)
    ------------------------------------------------------------------------------*}
    {$ENDREGION}
    procedure TIWUserSession.IWUserSessionBaseCreate(Sender: TObject);
    begin
    Increment:=-1;  /// incrément inconnu
    Langue:='FR';   /// Langue par défaut
    iwDatas:=TDatas.Create(Self);  /// Création DataModule
    end;
    
    {$REGION 'Documentation'}
    {*------------------------------------------------------------------------------
      Destruction de la session utilisateur
      @param Sender    TIWUserSession   (TIWUserSessionBase)
    ------------------------------------------------------------------------------*}
    {$ENDREGION}
    procedure TIWUserSession.IWUserSessionBaseDestroy(Sender: TObject);
    begin
    if FileExists(pdfname) then DeleteFile(pdfname);
    FreeAndNil(iwDatas);
    end;

    j'ai mis en rouge dans le code les points importants

    Serge

    P.S. des fuites de mémoires j'en ai eu , mais c'était la version Intraweb fournie avec XE4 qui était en cause
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 215
    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 215
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    j'ai essayé le classgroup, mais pareil. Par contre je n'utilise pas de datamodule séparé, je le met directement sur celui de la session, et il est bien libéré.
    Le pire c'est que j'ai un autre projet, exactement dans le même cas et dans lequel je n'ai pas le phénomène... Pourtant ça semble bien venir de ce composant parce que si je l'enlève, je n'ai plus de memory leak, si je le repose, elle revient. Je ferai une comparaison plus approfondie avec l'autre projet, mais c'est un peu agaçant ce genre de problème
    Et autant sur une applicaiton client windows ça n'aurait pas trop grande importance, autant sur une application serveur je ne peux pas me permettre de laisser passer cela.

    @++
    Dany

Discussions similaires

  1. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 11h41
  2. [Fuites mémoire] Je cherche un utilitaire
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/02/2005, 11h03
  3. Outil de recherche de fuite mémoire
    Par eag35 dans le forum MFC
    Réponses: 4
    Dernier message: 02/02/2005, 13h46
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 22h40
  5. [debug] fuites mémoires
    Par tmonjalo dans le forum C
    Réponses: 3
    Dernier message: 28/07/2003, 18h20

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