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?