Zuerst musst du mal einige Konstanten definieren:
Delphi-Quellcode:
const
cFinish = #1;
Kommando_1 = 'KOMM1';
Kommando_2 = 'KOMM2';
MaxArguments = 25;
Diese Konstante brauchst du noch. Bedenke dass du die Konstanten für Befehle beliebig erweitern kannst, diese aber im Server und im Client gleich sein müssen (falls du es getrennt hast).
So werden die Befehle zusammengesetzt:
Socket.SendText(Kommando_1+cFinish+'Param_1'+cFinish´'Param_2'+cFinish);
Hier musst du beachten, dass jeder Befehl mit cFinish abgeschlossen werden muss. Zweitens muss zwischen allen Parametern und dem Befehl ein cFinish stehen. Aufgrund dieses Zeichens wird der Text wieder getrennt.
Das ist die Prozedur zum Aufspalten eines Zusammengesetzten Befehls.
Delphi-Quellcode:
var
Arguments: array[1..MaxArguments] of String;
Command: String;
i: Integer;
NumArguments: Integer;
begin
Data := Socket.ReceiveText;
Command := Copy(Data,1,Pos(cFinish,Data)-1);
Delete(Data,1,Pos(cFinish,Data));
NumArguments := 0;
while Length(Data) > 0 do
begin
Inc(NumArguments);
Arguments[NumArguments] := Copy(Data,1,Pos(cFinish,Data)-1);
Delete(Data,1,Pos(cFinish,Data));
end;
end;
Das Codesegment musst du dir unter Umständen noch bearbeiten. In Command wird am Ende dann das Kommando (also der erste Parameter) drinstehen, Arguments[i] enthält den jeweiligen Parameter, und NumArguments die Anzahl Parameter. Du kannst den Code auch so umbauen, dass er mit dynamischen Arrays und nicht der vordefinierten Höchstanzahl funktioniert. Wie gesagt, der Code ist noch uneffizient, ich habe lange nicht mehr am Chat gearbeitet. Weiters könnte man es auch einfacher aufspalten, such dazu mal im Forum nach DelimitedText.
Ich hoffe dass dir diese Codefragmente weiterhelfen, ich hoffe du weißt auch wo du sie einbauen musst.
Greetz
alcaeus