Bonjour,
tu dis que tu appelles tes fonctions à partir d'un thread, mais il ne faut pas oublier que tout n'est pas autorisé dans le code d'un thread. Dailleurs, lors de la création d'un thread, l'IDE Borland ajoute systématiquement ce petit commentaire :
1 2 3 4 5 6 7 8 9 10 11 12 13
| //---------------------------------------------------------------------------
// Important : les méthodes et les propriétés des objets dans la VCL ne peuvent
// être utilisées que dans une méthode appelée en utilisant Synchronize, par exemple :
//
// Synchronize(UpdateCaption);
//
// où UpdateCaption pourrait être du type :
//
// void __fastcall MonThread::UpdateCaption()
// {
// Form1->Caption = "Mise à jour dans un thread";
// }
//--------------------------------------------------------------------------- |
D'après ce que j'ai lu dans ton code :
ShowMessage ("Base de collecte connectée sur le port " + COM);
--> Créer une fonction à part et l'appeler par la méthode "Synchronize()", ou supprimer dans un premier temps pour faire tes essais.
COM = AnsiString(szPortName);
Les "AnsiString" sont des objets VCL et NE DOIVENT PAS ETRE UTILISES DANS UN THREAD. J'en ai fait l'expérience. A remplacer par une chaine de caractères :
Pour te simplifier les choses, tu pourrais tester ton code à partir d'une fiche et non pas à partir d'un thread.
Partager