![]() |
Array Über TSocket senden
Ich möchte ein Online Schiffe versenken machen.
Nun muss ich (der server) die Positionen der gegnerischen Schiffe übergeben:
Delphi-Quellcode:
So sieht der Record Nachricht aus:
if online_server >= 1 then begin
feld_a := 1; // server wartet nur noch auf denclient for I := 1 to 10 do begin for J := 1 to 10 do begin Nachricht.feld[I,J] := mein_feld[I,J]; //ints end; end; for I := 1 to 5 do begin for J := 1 to 5 do begin Nachricht.schiffe[I,J] := meine_schiffe[I,J]; //ints end; end; for I := 1 to 5 do begin Nachricht.namen_schiffe[I] := schiffs_namen[I]; //strings end; Nachricht.aktion := 'server_feld'; with Server.Socket do begin for I := 0 to ActiveConnections-1 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; {with} end;
Delphi-Quellcode:
type TChatNachricht = Record
chat : string[255]; name : string[255]; aktion : string[255]; feld : array[1..10,1..10] of integer; schiffe : array[1..5,1..5] of integer; namen_schiffe : Array[1..5] of string; spiel_status : integer; schuss_x, schuss_y, treffer : integer; //schuss_x/schuss_y enthaelt entweder dein schuss koordinaten oder die vom gegner. Treffer enthaelt entweder 3 - wasser getroffen oder 4 - schiff getroffen end; Hier empfängt der client die Daten:
Delphi-Quellcode:
Nach dem senden, stürtzt der Client mit folgender Fehlermeldung ab: Ungültige Zeigeroperation
if Nachricht.aktion = 'server_feld' then begin
for I := 1 to 10 do begin for J := 1 to 10 do begin gegner_feld[I,J] := Nachricht.feld[I,J]; end; end; for I := 1 to 10 do begin for J := 1 to 10 do begin gegner_schiffe[I,J] := Nachricht.schiffe[I,J]; end; end; for I := 1 to 5 do begin schiffs_namen_KI[I] := Nachricht.namen_schiffe[I]; end; feld_a := 1; //server ist fertig mit dem setzen, es wird auf den client gewartet end; Darf man überhaupt so arrays so versenden? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz