INDY Nachricht an alle Clienten senden
-
Hallo
Ich habe die folgende Methode:
if(AContext->Connection->Connected()) { // ausparsen... if(AContext->Connection->IOHandler->ReadLn() == "position"); { pos_x = AContext->Connection->IOHandler->ReadLn().ToInt(); pos_y = AContext->Connection->IOHandler->ReadLn().ToInt(); TList* list = IdTCPServer1->Contexts->LockList(); for(int i = 0 ; i < list->Count; ++ i) { //TIdContext* context; //TIdContext(list[i])->IOHandler->WriteLn("position"); //TIdContext(list[i]).IOHandler->WriteLn(IntToStr(pos_x)); //TIdContext(list[i]).IOHandler->WriteLn(IntToStr(pos_x)); } IdTCPServer1->Contexts->UnlockList(); this->Invalidate(); } //AContext->Connection->IOHandler->WriteLn("ok"); }
Und möchte
//TIdContext(list[i])->IOHandler->WriteLn("position"); //TIdContext(list[i]).IOHandler->WriteLn(IntToStr(pos_x)); //TIdContext(list[i]).IOHandler->WriteLn(IntToStr(pos_x));
an alle Clienten senden. Irgendwie funktioniert nur nur der auskommentierte Code nicht.
Vielleicht hat jemand ein Tip, wie das geht, da die drei oben genannten Qellcode Zeilen vollkommener Mist sind
und mir maximal folgende Fehler bringen:
[BCC32 Fehler] Unit1.cpp(33): E2285 Keine Übereinstimmung für 'TIdContext::TIdContext(TList)' gefunden
[BCC32 Fehler] Unit1.cpp(33): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden
[BCC32 Fehler] Unit1.cpp(34): E2285 Keine Übereinstimmung für 'TIdContext::TIdContext(TList)' gefunden
[BCC32 Fehler] Unit1.cpp(34): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden
[BCC32 Fehler] Unit1.cpp(35): E2285 Keine Übereinstimmung für 'TIdContext::TIdContext(TList)' gefunden
[BCC32 Fehler] Unit1.cpp(35): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden
-
Hat keiner eine Idee, wie man an alle Clienten Nachrichten versenden kann? (In meinem Fall quasi zur synchrnisation der Positionsdaten)
-
honk89 schrieb:
[BCC32 Fehler] Unit1.cpp(33): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden
Lass dir die Meldung doch mal auf der Zunge zergehen ...
-
Ja, das habe ich schon
Die Syntax habe ich Ursprünglich aus einem Delphi Beispiel entnomen und hatte auch mit dem New Operator gearbeitet und hatte etwa folgendes fabriziert:
TIdContext* context = new TIdContext(list[i]); context->IOHandler->WriteLn("position"); context->IOHandler->WriteLn(IntToStr(pos_x)); context->IOHandler->WriteLn(IntToStr(pos_x));
Leider hat der Compiler da nur zu beanstanden, dass der
TIdContext* context = new TIdContext(list[i]);
list[i] nicht als Parameter akzeptiert.
Ich verzweifel, da es keine brauchbare C++ Dokumentation für Indy gibt...
-
Hallo,
BDS2006-Hilfe schrieb:
**Indy.Sockets version 10.1.1
TIdContext
**
Declarationconstructor Create( AYarn: TIdYarn ); virtual; reintroduce;
Parameters
Parameters Description:
AYarn Executable thread or fiber for the task.Summary
Constructor for the object instance.
Description:
Create is a reintroduced constructor in TIdTask.
AYarn is the thread or fiber that executes for the task.Create calls the inherited constructor, and assigns the TIdYarn instance in AYarn to the Yarn property.
Use Destroy to free the object instance.
eventuell hilft das ein Stück weiter!?
MfG
-
Naja, so wirklich hilft mir das nicht weiter, aber Danke.
Ich möchte hier keinen Stress machen, aber ich bin echt am verzweifeln, ist es so schwer, an alle Clienten eine Nachricht zu senden (unabhängig von meinem Quellcodeansatz, der vollkommener Stuss ist)