Client\Server daten übermittlung
-
Öhm... überleg dir nochmal die Reihenfolge...
.. besonders die Zuweisung von com und tmptext und dem Zeitpunkt der Befüllung..
*winkt mit Gartenzaun*
-
Kann man mir nicht einfach sagen was falsch ist?
-
Kann man... dann geht aber der Lerneffekt flöten.. j/k
Also nen AnsiString wandelst du einmal nicht in den Typ char um indem du ihm nen char zuweist.
Und dann würde ich auf die Variable abprüfen die du befüllst...
denn du fragst com nach einem Wert den tmptxt von dir zugewiesen bekommen hat.
Da kommt dann erwiesenermaßen nix bei rum....
-
Und mit welchen Befehl wandle ich Ansistring in char um?
-
Brauchst du nicht...
frag dann einfach nach tmptxt[1] ab...
switch (tmptxt[1]) //erstes Feld im Array des AnsiStrings { case '1': Application->MessageBox("Verbindung", "Erfolgreich", MB_OK); //wenn com 1 ist MessageBox erzeugen }
Sollte gehen... Happy Weekend!
-
In dem Zusammenhang dürfte wohl das hier noch interessant sein: TServerSocket
-junix
-
Jetzt habe ich nur noch ein einziges problem.
Ich habe die Werte um sie eindeutig als Befehle festzulegen und von den Chat Text abzuheben als '~2','~3' festgelegt. Bsp. switch (tmptxt[3]) { case '~1':Application->MessageBox("Verbindung", "Erfolgreich", MB_OK); break;
}
Ich bekomme nun jedoch eine Fehlermeldung wen ich im Chatfenster $, ~, oder eine der Festgelegten Zahlen angebe.
Wie kann ich das unterbinden?
-
$~1 etc. sind ZeichenFOLGEN... Du greifst in deiner switch-anweisung auf ein einzelnes Zeichen zu... Wie soll das denn funktionieren?
Mal ne Frage... Wie sieht dein Chat-Programm eigentlich sonst so aus?
Was steht zu dem eben genannten Zeitpunkt überhaupt in tmptxt drin?
-
und wie kann ich auf Zeichenfolgen zugreifen?
-
HI,
mit switch geht das nicht! Nur mit if !MFG
Alexander Sulfrian
-
Client Seite:
ClientSocket->Socket->SendText=(1);
Server Seite:
int id; id=Socket->ReceiveText(); switch(id) { case 1: Application->Terminate(); break; case 2: ..... break; }
Kannst für jedes Ereignis ne Eigene ID machen.
über die switch/case Anweis8ng kannste die Ereignise auslösen.Wenn du was bracuhst wo du nen Ereignis ausklösen willst, das jedesmal nen neuen Zusatzwert hat, meld dich. Da hab ich auch was.
-
Original erstellt von Thargor:
**Client Seite:ClientSocket->Socket->SendText=(1);
Server Seite:
int id; id=Socket->ReceiveText(); switch(id) { case 1: Application->Terminate(); break; case 2: ..... break; }
**
Hi,
im Prinzip ist das ja soetwas wie ein Protokoll!
Ähm aber was soll das (der falsche Code)?Ich meine:
ClientSocket->Socket->SendText=(1);
währe das nicht besser so:
ClientSocket->Socket->SendText(IntToStr(1)); // oder ClientSocket->Socket->SendText("1");
und
int id; id=Socket->ReceiveText();
Wie stellst du dir von, dass es einen Text (AnsiString) automatisch in einen int umwandeln kann?
Wenn dann müsstest, du schon das so schreiben:int id = IntToStr(Socket->ReceiveText()); // oder bei einem Protokoll, wo z.B. das 1. Zeichen die Anweisungsart angibt: String Anweisung = Socket->ReceiveText(); int id = IntToStr(Anweisung[1]);
Und dann noch was: Du könntes ruhig ein bischen den Code einrücken! So z.B.:
switch(id) { case 1: Application->Terminate(); break; case 2: ..... break; }
Ist IMHO besser leserlich!
Naja sonst ist das ja keine neue Idee! (s. Protokoll)
MFG
Alexander Sulfrian
[ Dieser Beitrag wurde am 18.05.2003 um 00:13 Uhr von Alexander Sulfrian editiert. ]
-
Naja.
Sowie ich es da stehen habe funzt es bei mir. Hab mich auch gewundert.
Sorry wegen den Text. Normalerweiße mach ich das.
Naja. Ehrlich gesagt habe ich über Protokollenichts gelesen. Wusste net mal das das eins is. Hab ich mir halt mal so ausgedacht für mein aktuelles Projekt.
-
Original erstellt von Thargor:
Ehrlich gesagt habe ich über Protokolle nichts gelesen.Hi,
hast du schon mal auf den Link auf der 1. Seite des Threads geklickt?MFG
Alexander Sulfrian
PS: Endlich funkt die I-Net Verbindung auch unter Linux!
-
Ne. Hab ich net gemacht.
Aber bei mir klappt j aalles im Projekt.
-
Das Versäumnis nachholen wär sehr sinnvoll(!)
-junix
-
Jopp.
Werd ich jetzt mal machen.
EDIT:
Gut beschrieben. Genausp hab ich es ja gemacht.
ich schicke immer so was in der Art:
0*0 oder 1*125
die erste Zahl ist der Modus. Damit sage ich dem Client/Server, was genau er mit dem 2ten Teil machen soll.
Das passiert dann halt alles über switch/case Abfragen.
Teilweise sind es dann einfach Fallunterscheidungen (0 und 1) manchmal auch werte für Energieabzug. (Arbeiten an einem Netzwerkgame)Praktisch sowas. *g*
[ Dieser Beitrag wurde am 19.05.2003 um 15:04 Uhr von Thargor editiert. ]