Bonjour

J'ai fait un serveur TCP avec le composant TidTCPServer dans une application FMX. Dans la m�thode ServeurExecute je lit les donn�es re�ues et j'en affiche une partie dans une liste box.

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
 
void __fastcall TForm1::ServeurExecute(TIdContext *AContext) {
	TByteDynArray pInfo;
	unsigned short data[32 * 25];
	char chaine[256];
	try {
		AContext->Connection->IOHandler->ReadBytes(pInfo, 1856, false);
		memcpy(chaine, &pInfo[0], 256);
		memcpy(data, &pInfo[256], 32*25*2);
		String rep = "";
		int n = 0;
		while (n < 256 && chaine[n] != 0) {
			rep += chaine[n];
			n++;
		};
		updateListe(rep);//rafraichissement de la liste
 
	}
	catch (const Exception& e) {
		// AFAIRE
	}
}
Manifestement la fonction d'affichage ci dessous ne supporte pas d'�tre acc�d� par un thread. Car j'ai r�guli�rement des exceptions qui normalement n'ont pas lieu d'�tre

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
 
void __fastcall TForm1::updateListe(String rep) {
	lbReseau->Items->Add(rep);
	if (lbReseau->Items->Count > 10)
		lbReseau->Items->Delete(0);
}
Pour �viter cela, j'ai vu qu'il fallait que j'utilise la m�thode Synchronize mais je n'arrive pas � la mettre en oeuvre.

En effet j'ai voulu utiliser TIdThread.Synchronize mais il ne veux pas compiler cette ligne.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
TIdThread::Synchronize((TThreadMethod)&updateListe(rep));
Voici l'erreur E2109 Ce n'est pas un type autoris�

Une id�e?