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 :

Exception EStackOverflow


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut Exception EStackOverflow
    voila j'ai un problème: une fentre d'exception s'ouvre une fois que j'ai exécuté mon application et que je la ferme .
    En fait elle s'execute trés bien mais lorsque je la ferme la fenetre d'exception s'ouvre avec ceci comme message:

    Exception EStackOverflow dans le module ProjectTPEdit.exe a 00003899.
    Débordement de pile
    Alors je vois pas c'est dût a quoi , peut etre est ce une exception fréquente dû a tel ou tel mauvaise syntaxe

    Si quelqu'un peut m'éclairer sur le sujet

  2. #2
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    c'est un débordement de pile : en général une boucle qui ne s'arrète jamais et qui remplit toute la mémoire.

  3. #3
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    ben je me rapelle pas que je fais une boucle

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    As tu fais un évènement OnCLose ou OncloseQuery ?

  5. #5
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    non ,j'ai pas traité l'évènement close .

  6. #6
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Tu as surchargé le destroy de ton composant ?

    comment as tu fait ?


    pas destroy(self); ??????

  7. #7
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    oui j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    destructor TPslEditEx.destroy;
    begin 
    self.destroy;
    end;
    Lool, je viens de changer en faisant comme tu m'as montré pour le create et ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    destructor TPslEditEx.destroy;
    begin 
    inherited destroy;
    end;
    question bete : je crois que j'ai pas bien compris a quoi sert ce inherited :

  8. #8
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    par contre j'ai un autre problème , j'ai ajouté mon composant dans la palette c'est ok on le voit et je peus meme l'ajouter a ma fiche main mais le problème c'est que dés que j'essaye de le supprimer de ma fiche une fois l'avoir mis il me dit

    débordement de pile - enregistrez votre travail et relancez delphi
    Et dés fois il quitte carrément delphi

  9. #9
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    tu appelais en boucle la procedure destroy de ton composant mais tu ne le détruisais jamais.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Inherited sert à indiquer que la méthode appelée est celle de l'ancêtre.
    Contructor Create(aowner : Tcomponent);
    Begin
    Inherited create(aowner); // appelle le constructeur ancètre pour création de la base du composant. il est placé en tète de procédure
    ...... // création de sous composants et initialisation de variables
    End;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    destructor destroy;
    Begin
    ...... // destruction des sous composants
    inherited destroy; // détruit la base du composant. placé à la fin de l aprocédure
    end;


    fais voir le code de ton composant

  10. #10
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    ok j'ai compris

    voici le code du composant:

    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
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    unit UPslEditEx;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,Types,StdCtrls;
     
    type
            TPslEditOption=(eoValidateOnReturn, eoRestoreOnEscape);
            TPslEditOptions = set of TPslEditOption;
            TPslEditEx = class(TEdit)
     
            procedure doOnValidate ; virtual;
            procedure doOnEscape ; virtual;
     
     
    private
        { Déclarations privées }
        FOptions : TPslEditOptions; // Option à rajouter pour le nouveau composant
        FOnValidate : TNotifyEvent; // evenement à rajouter pour le nouveau composant.
        FOnEscape : TNotifyEvent; //evenement à rajouter
     
    protected
    { Déclarations protégées }
    procedure KeyPress(var Key: Char); override;
    //procedure loaded; override ;
     
    public
        { Déclarations publiques }
        FLastText : String;
    constructor create (AOwner : TComponent); override;
    destructor destroy ; override;
     
     
    published
     property Options: TPslEditOptions read FOptions write FOptions;
     property OnValidate : TNotifyEvent read FOnValidate write FOnValidate;
     property OnEscape : TNotifyEvent read FOnEscape write FOnEscape;
     
     
    end; // end des declarations
     
    implementation
     
    procedure TPslEditEx.KeyPress(var Key: Char);
    begin
       { A completer }
        if Key=#13 then doOnValidate
        else if Key=#27 then doOnEscape
        else inherited;
    end;
     
    procedure TPslEditEx.doOnValidate;
    begin
         If assigned(FOnValidate) then FOnValidate(self);
    end;
     
    procedure TPslEditEx.doOnEscape;
    begin
       If assigned(FOnEscape) then FOnEscape(self);
    end;
     
    //procedure loaded
    //begin
    { A completer }
    //end;
     
    constructor TPslEditEx.create(AOwner : TComponent);
    begin
    inherited create(AOwner);
    end;
     
    destructor TPslEditEx.destroy;
    begin
       inherited destroy;
    end;
     
    end.

  11. #11
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    2 trucs bizarres ....

    1) les procedures
    procedure doOnValidate ; virtual;
    procedure doOnEscape ; virtual;

    devraient être en protected { Déclarations protégées }


    2)

    tu dis que ton composant est dans la palette....

    comment as tu fais pour le mettre ? il devrait y avoir une procedure register et son implémentation...

  12. #12
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    oui ce register est dans le paquet conception, c'est l'unité registerComposant ...

  13. #13
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Tu devrais avoir

    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
    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
    unit UPslEditEx;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,Types,StdCtrls;
     
    type
            TPslEditOption=(eoValidateOnReturn, eoRestoreOnEscape);
            TPslEditOptions = set of TPslEditOption;
     
     
      TPslEditEx = class(TEdit)
    private
        { Déclarations privées }
    .
    .
    .
    .
    .
    .
    published
     property Options: TPslEditOptions read FOptions write FOptions;
     property OnValidate : TNotifyEvent read FOnValidate write FOnValidate;
     property OnEscape : TNotifyEvent read FOnEscape write FOnEscape;
    end; // end des declarations
     
    procedure Register; // une procedure register
     
    implementation
     
    procedure TPslEditEx.KeyPress(var Key: Char);
    .
    .
    .
    .
    .
    destructor TPslEditEx.destroy;
    begin
       inherited destroy;
    end;
     
    procedure Register; //implementation de la procedure register
    begin
      RegisterComponents('Nom de l'onglet de la palettre', [TPslEditEx]);
    end;
     
     
    end.

  14. #14
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    ah bon ?
    mais dans un des tutoriaux de dévolppez.com pour ajouter un composant a la palette il disait qu'il fallait ajouter un package de conception dans lequel on met une unité Registercomposant qui contient cette procédure dont tu parle :

    http://sjrd.developpez.com/delphi/de...ge=utilisation

    ben en fait ca le met dans la palette mais il y a un bug quant je veus le supprimer de la fiche aprés l'avoir ajouter dedans.

    Si c'est mieux de pas mettre de paquets de conception, je sais pas
    :

  15. #15
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    C'est une méthode ue je connaissais pas mais çà devrais marcher.

    qu'as tu dans cette unit ?


    après avoir fait des modifs, as tu pensé a recompiler ton package ? hors F9.

  16. #16
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    J'ai ceci:

    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
    unit RegComposant;
     
    interface
     
    uses
      Classes, UPslEditEx;
     
    procedure Register;
     
    implementation
     
    procedure Register;
    begin
    RegisterComponents('Tutoriel', [TPslEditEx]);
    end;
     
    end.

  17. #17
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    ça a l'air OK :

    Après avoir fait des modifs, as tu pensé a recompiler ton package ? (hors F9).

  18. #18
    Membre habitué Avatar de questionneuse
    Inscrit en
    Décembre 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 319
    Points : 127
    Points
    127
    Par défaut
    non

    ben maintenant que je l'ai fait ca marche ben t'as vraiemnt réponse a tout

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

Discussions similaires

  1. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  2. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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