Ok, wahrscheinlich hast du Recht und ihc bin auch shcon ziemlich durcheinander im Projekt. Das liegt einfach daran, dass am Anfang viele Dinge nicht mit bedacht werden und die dann hinterher füchtig eingesetzt werden!
Ich denke ich schriebe die Units nochmal neu und ordentlich!
Zu der Sache mit dem Controller. Also nur der Server kennt den Controller!
Wenn ein Spieler setzt, schickt er eine Nachricht an den Server, zB:
'Bet[600]' ---> 600setzen
Wenn der Server das empfängt, soll er den Controller benachrichtigen, dass er die procedure Bet aufruft!
Dann kann der Controller aber nichtmehr den Server benachrichtigen, wenn er die procedure ausgeführt hat, weil er den Server ja nicht in den Uses hat!
Ich weiss nun wie ich über-kreuz-uses machen kann, aber ich will es garnicht, will mein Projekt ja hinterher ordentlich haben!
Was hälst du denn davon wie ich die Nachrichten schicke und auswerte?
Ich schreib hier ma n paar Zeilen dazu:
Delphi-Quellcode:
SendText('Call'); //wär zB ein einfacher Call
SendText('SGeld(1)[1500]'); //würde zB das Geld von Spieler 1 auf 1500 setzen
Ansatz so richtig oder Verbesserungsvorschlag?
Zur Auswertung hab ich mir ne Funktion geschrieben, der ich einen String und zwei Zeichen geben kann, und die dann den Substring zwischen den beiden Zeichen ausgibt.
Sieht dann zB so aus:
Delphi-Quellcode:
function TMyClient.Klammern(Value, Search1, Search2: String): String; //eben genannte Funktion
begin
Result := Copy(Value, Pos(Search1, Value) + 1, Pos(Search2, Value) - Pos(Search1, Value) - 1);
end;
procedure TMyClient.Parse_Text(Value: String); //hier wird dann der Text ausgewertet, hoffe das ist einigermassen verständlich!
var
temp: String;
begin
temp := Copy(Value, 0, Pos('[', Value) - 1);
if temp = 'CBet' then //CBet wird geändert
CBet := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'Phase' then //Phase wird geändert
Phase := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'SBlind' then //SBlind wird geändert
SBlind := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'Dealer' then //Dealer wird geändert
Dealer := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'AktiverSp' then //AktiverSp wird geändert
AktiverSp := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'Pot' then //Pot wird geändert
Pot := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'ClientNumber' then //ClientNr wird zugewiesen
ClientNr := StrtoInt(Klammern(Value, '[', ']'));
if temp = 'Start' then //Spielstatus
if Klammern(Value, '[', ']') = 'True' then
Start := True
else
Start := False;
end;
Gibts da eigentlich ne schönere/bessere Möglichkeit als diese tausend if-Abfragen?
Und dann hab ich da noch ein Problem:
Der Server schickt oft soviele Nachrichten nacheinander, dass der Server beim auswerten die Nachrichten durcheinander bringt, wie kann ich das verhindern?
Danke für die Hilfe und hoffe ich hab nix vergessen, aber jetzt muss mein Hund raus