Bonjour, actuellement en projet de fin d'année de BTS IRIS je suis obligé de travailler sous C++Builder 5 et j'ai a créer un serveur TCP tournant dans un thread de façon à ne pas bloquer mon programme. Je suis face à un problème insoluble (tellement WTF) je m'en remet donc au forum si quelqu'un avait la capacité et la patience de voir d'où mon problème peut venir cela m'aiderait beaucoup ayant épuisé toutes mes ressources.
(Je suis obligé de faire un thread dû à la fonction accept de mon serveur tcp).
Je vous copie/colle une partie de mon code :
Initialisation du thread (Form1):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Timer1->Enabled=1; tcp=new thread_tcp(&val_tcp,&vmc);
Constructeur du thread (thread.cpp):
Fonction Execute (bloquante, thread.cpp) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 __fastcall thread_tcp::thread_tcp(bool *valeur,VMC *Vmc) : TThread(false) { serveur.init(17000); val=valeur; vmc=Vmc; k=*val; Form1->ListBox1->Items->Add("plop"+(AnsiString)k); sauv_vit_app=new float[vmc->getnbVMC()]; bzero((float *)sauv_vit_app, sizeof(*sauv_vit_app)); }
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 void __fastcall thread_tcp::Execute() { int err=0; Form1->ListBox1->Items->Add("plooooop"+(AnsiString)k); while(*val) { serveur.attenteco(); while( (err==0) && (*val==1) ) { err=serveur.reception(); Synchronize(traitement); err=serveur.envoie(); } err=0; } }
Je vous transmet aussi ce que j'ai a l'affichage dans ma ListBox :
Avec un Evaluate/Modify je me rends compte que mon pointeur "val" n'a plus d'adresse ni de valeur. Je remercie ENORMEMENT les courageux qui jetterons un œil à ça !plop1
plooooop0![]()
Partager