begin process at 2010 02 10 06:45:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

J'AI BESOIN D'AIDE !!!! :O

 > 

Delphi et DLL C++ (Erreur de create form )


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Delphi et DLL C++ (Erreur de create form )

mercredi 20 octobre 2004 à 23:24:14 | Delphi et DLL C++ (Erreur de create form )

grosiflex

Bonjour,

Voila j'ai codé une dll en C++ avc VC++ dans cette DLL il y'a un thread. qui gere une connexion, socket, etc...

A coté j'ai une interface graphique (.exe), développée en Delphi 7. Cet interface utilise la DLL.

A L'init, l'application passe en parametres a la DLL des pointeurs sur ses fonctions. Ainsi Mon thread c++ peut acceder a des focntions delhpi.

JE me sert de ces fonctions comme evenements du style procedure OnConnect(), procedure OnDeconnect();

Tous marche bien jusqu'a ce que j'essaye dans uen de ces focntion (procedure OnMsg() ) de creer une fenetre:
Form1 := TForm.Create( Self );
ou
Form1 := TForm.Create( FrmMain );

ca ce moment la Delphi perd les pedales, c'est a dire que la fenetre j'affiche bien, mais n'est pas "rafreshie" elle est blanchatre et ne repond pas. par contre si un autre evenements est appellé la fenetre principale est bien rafreshie et repond bien, mais la fenetre creer reste en "nouille"

Et quand je coup l'appli j'ai une erreur "Handle de fenetre non valide"

Pour info:
------------
Si je delgue le create a un timer sur la fiche (interval 1) et que mon evenement OnMsg() ne fait que FrmMain.Timer1.Enable := True; ca marche bien mais c'est pas tres propre


Je ne comprend pas pkoi ca me fait ca. j'ai essayé sur plusieurs machine et a chaque fois idem....
quelqu'un a une idée ???
y'a t'il un rapport entre le Create et l'appellant ???
Quelqu'un a une solution ???

Si vous avez compris mon probleme:
Est ce une bonne solution pour gerer des evenements entre une DLL et une appli ???
Comment dois je m'y prendre si non ????

:( cela remet en cause toute mon aplli qui est déja pas mal avancée :( !!!

MERCI de m'aider suis vraiment en misere la trovu erien a ce sujet sur le net, ou alors je cherche mal...

A++
Grosiflex
mercredi 20 octobre 2004 à 23:54:18 | Delphi et DLL C++ (Erreur de create form )

grosiflex

j'ai oubié de préciser que si la fenetre etait déja creer il y'y avais plus de probleme....
Comment fait pour la creer dynamiquement ???

Comment puis faire lancer le Create pas ma fenetre principale ???
jeudi 21 octobre 2004 à 20:00:38 | Re : Delphi et DLL C++ (Erreur de create form )

leveugle

Salut,

je pense que cela doit avoir un rapport avec la méthode synchronize de l'objet TThread de Delphi...
jettes un oeil de ce côté....

A+
Damien
jeudi 21 octobre 2004 à 21:09:09 | Re : Delphi et DLL C++ (Erreur de create form )

Delphiprog

Administrateur CodeS-SourceS
leveugle a en partie raison je pense. Mais le problème va au delà.
J'ai connu ces poblèmes même avec une DLL écrite en Delphi.

L'application principale (celle écrite en Delphi) possède un objet TApplication créé par défaut. Cet objet possède un handle.

Une DLL ne partage pas l'objet application en question. Cela se comprend dans la mesure où elle peut être appelée par différents process. Mais elle possède malgré tout un objet Application dont le Handle est à zéro par défaut.

Voici ce que je te propose : dans la première fonction appelée pour initialiser la DLL, tu passes le handle de l'application "mère" et tu l'affectes au handle de l'objet TApplication de la DLL.

void InitDll(THandle AppHandle)
{
Application->Handle = AppHandle;
}
begin


Ainsi, Windows enverra également ses messages à la DLL.

Je te laisse le soin d'adapter ton code à tes besoins, mais le principe est celui-ci.

Avant de libérer la Dll, je te recommande d'affecter 0 au handle de son objet TApplication.

void KillDll()
{
Application->Handle = 0;
}


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
jeudi 21 octobre 2004 à 23:30:09 | Re : Delphi et DLL C++ (Erreur de create form )

grosiflex

Bien déja merci a vous de m'aider, je dirais meme plus:

un GRAND MERCI a VOUS !!!

Les informations enoncées ici vont surement m'aider a pousser la recherche suivant ces pistes.

Le seul probleme, c'est que:

- je n'est pas de TThread dans l'exe delphi
- je ne vois pas comment faire le lient entre une TApplication en delphi et dans ma DLL C++...

je vais pousser la recherche, si vous avez d'autres idées n'hesitez pas....


Je me demandais juste si il n'exitait pas une methode pou faire executer du code au processus princiapale de l'application pluto que par le thread de ma dll ???

je continue a chercher

a bientot
jeudi 21 octobre 2004 à 23:43:10 | Re : Delphi et DLL C++ (Erreur de create form )

grosiflex

Ou si non autre questions:

Comment faire executer (proprement) des evenements a mon exe delphi par ma dll ????


-sans me lancer dans un activeX forcement
-en evitant un minimum les conceptes trop MS

Ou si non comment puis-je passer le Handle de la TApplication a ma DLL et ca veux dire koi en C lol ???

merci

a bientot


Cette discussion est classée dans : erreur, dll, fenetre, delphi, create


Répondre à ce message

Sujets en rapport avec ce message

Les messages d"erreur [ par Zoubir ] Bonjour,Je demande est ce que c'est possible de personnaliser les messages d'erreur qui sont gérés automatiquement par Delphi telsque les messages d'e appel dll en C depuis delphi [ par bdv ] quel est le code pour appeler une fonction X dans une dll développée en C? Erreur avec le module 'bordbkl50.dll' [ par lomig ] A l'exécution de mon appli (sous delphi5-Win2000), j'ai parfois un message d'erreur qui bloque mon appli mais aussi l'environnement Delphi (je suis ob Erreur avec le module 'bordbkl50.dll' [ par lomig ] A l'exécution de mon appli (sous delphi5-Win2000), j'ai parfois un message d'erreur qui bloque mon appli mais aussi l'environnement Delphi (je suis ob création de vue avec access ? [ par tgomas ] je bosse sur une appli interfacée avec access, j'ai une requête qui crée une vue (CREATE VIEW...), mais à l'éxecution j'ai l'erreur 'Erreur de syntaxe Blocage de Delphi [ par Jod ] Super débutant, j'ai installé Delphi 6 personnel. Tout a bien fonctionné jusqu'à maintenant... Chaque fois que j'essaye d'exécuter, je reçois le messa fenetre avec liste de checkbox [ par djl ] g debute en delphi, g me ser de delphi 6 personalj'arrive pas a faire avec le builder une fenetre contenant une liste de checkbox avec scrollbar si ya Récupération de PChar renvoyés par une DLL [ par daniel ] J'ai écrit une DLL en Delphi 5 devant me renvoyer des chaînes de caractères. Je les ai codés en PChar. Tout ce passe bien lorsque j'appelle cette DLL Delphi en général... [ par Cask ] Salut à tous, je suis tout nouveau en delphi. Je programme depuis longtemps en VB et je voudrais me mettre à delphi. J'ai une qestion tres importante [Erreur] RLINK32: Error opening file "C:\Windows\Bureau\NKZ\Programmation\Delphi\Projets\Poker\Unit1.dfm" [ par MasterNKZ ] Salut tout le monde, je refais un ptit poker mais ca coince deja.Voila mon probleme, lorsque j'utilise le composant ImageList et ke je mets plus de 13


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales