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

C++Builder Discussion :

Composant cr�e dynamiquement & Access in invalid memory


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut Composant cr�e dynamiquement & Access in invalid memory
    Bonjour,
    Toujours sur le th�me de mon pr�c�dent post 'Evenement d'un composant cr�e dynamiquement', il semble que tous les �v�nements (hormis les 'basiques' ne n�c�ssitant que TObject *Sender en parametres)
    ont besoin d'etre 'retouch�s' .
    En effet, sur la cr�ation de OnMouseMove d'un TButton
    . en manuel on obtient:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
     xxxMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
    . pour le cr�er en dynamique, il faut:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    xxxMouseMove(TObject *Sender, Classes::TShiftState Shift, int X, int Y);
    Bon, ca fera pas tourner un satellite mais ca servira bien a quelqu'un un jour
    Maintenant j'ai une question (et oui encore !):
    Ma form et les composants sont bien cr�es en dynamique, les �v�nements aussi, et je fais des tests pour par exemple stoker des valeurs dans une StringList lors du click dans une listbox (par ex).
    Mais je tombe sur CodeGuard qui dit :
    Access in invalid memory
    Il semble que : StringList = ???;
    C'est pourtant bien un membre de la form, et j'ai essay� de d�clarer:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Form->MaListe = new TStringList;
    aussi bien dans le constructeur de celle ci, que dans la fonction ds la dll qui cr�e cette form. Le compilateur dit OK, mais j'ai tout faux a l'execution...
    Merci d'avance

  2. #2
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bijour,
    Ji trouvi...
    Rien d'exceptionnel, a part que je me suis lanc� dans un truc un peu plus dur que mon niveau de connaissance mais faut bien progresser...
    A propos, si quelqu'un connait des organismes serieux pour obtenir une formation reconnue (salari� CDI, je peut tenter le Fongecif ?).
    Ou sur quel forum poser ce genre de question...

  3. #3
    R�dacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par d�faut
    Citation Envoy� par Cantrelle
    Bijour,
    Ji trouvi...
    Rien d'exceptionnel, a part que je me suis lanc� dans un truc un peu plus dur que mon niveau de connaissance mais faut bien progresser...
    A propos, si quelqu'un connait des organismes serieux pour obtenir une formation reconnue (salari� CDI, je peut tenter le Fongecif ?).
    Ou sur quel forum poser ce genre de question...
    Pourrais-tu donner la solution � ton probl�me si elle peut servir � d'autres ?

    Pour les formations, va voir les derniers forums

  4. #4
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Bonsoir,
    Bon, je vais essayer de r�capituler du mieux possible en essayant d'etre clair (c'est pas gagn� ! ).
    De l'application j'appelle une fonction d'une Dll que j'ai cr�e a laquelle je passe 2,3 parametres :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    extern "C" __declspec(dllexport) __stdcall void Ouverture(TForm *FicheBase, String TypeObjet, TDataSet *Table, int *TableauChamp);
    (ca va evoluer car pour l'instant ce n'est qu'un test)
    Lors de l'execution de 'void __stdcall Ouverture(...)' la fiche est cr�e dynamiquement :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    TFVierge *FVierge;
    FVierge = new TFVierge(FicheBase);
    FVierge->FicheOwner = FicheBase;
    //etc...
    puis les composants...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    //etc...
            if (TypeObjet.operator ==("TListBox"))
            {
            FVierge->ObjetListe = new TListBox(FVierge);
            }
    //etc...
    A la fin de l'execution, je 'lance' la fiche :
    puis j'ai d�fini a nouveau un membre de TVierge:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    FVierge->FormFini = new TFVierge(FVierge);
    //FormFini  est une TForm *
    puis ses variables:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    FVierge->FormFini->ListeFinie = FVierge->NListBox;
    //ListeFinie et NListBox sont des TListBox *
    Ce sont ces variables que j'utilise dans tous les autres �v�nements du code. J'ai pas trouv� mieux pour l'instant
    Mais je suis ouvert a toutes critiques...et conseils.
    Bonne nuit

  5. #5
    Membre �prouv�
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifi�)
    Inscrit en
    D�cembre 2004
    Messages
    2 059
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : OPNI (Objet Programmant Non Identifi�)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 2 059
    Par d�faut
    Aie, j'ai dit une betise dans le commentaire :
    Code:

    FVierge->FormFini = new TFVierge(FVierge);
    //FormFini est une TForm *
    FormFini est d�fini par TFVierge *FormFini.
    Dans le .h, j'avais d�clar� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    class TFVierge : public TForm
    ...bon pour l'instant ca donne le resultat escompt�.
    En attendant vos r�actions...(par trop dures hein! j'chui pas all� a l'�cole mou� ).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 21/12/2010, 13h06
  2. effacer des composants cr�e dynamiquement
    Par forzaxelah dans le forum Delphi
    R�ponses: 7
    Dernier message: 29/06/2006, 14h14
  3. Probl�mes avec une TForm cr��e dynamiquement
    Par Pascal Jankowski dans le forum Composants VCL
    R�ponses: 5
    Dernier message: 30/03/2005, 11h55
  4. R�ponses: 5
    Dernier message: 12/07/2004, 21h00
  5. R�ponses: 7
    Dernier message: 08/08/2003, 18h09

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