AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Array Über TSocket senden
Thema durchsuchen
Ansicht
Themen-Optionen

Array Über TSocket senden

Ein Thema von bl4ckb1rd · begonnen am 29. Jun 2009
Antwort Antwort
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#1

Array Über TSocket senden

  Alt 29. Jun 2009, 12:00
Ich möchte ein Online Schiffe versenken machen.

Nun muss ich (der server) die Positionen der gegnerischen Schiffe übergeben:

Delphi-Quellcode:
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;
So sieht der Record Nachricht aus:

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:
if Nachricht.aktion = 'server_feldthen 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;
Nach dem senden, stürtzt der Client mit folgender Fehlermeldung ab: Ungültige Zeigeroperation

Darf man überhaupt so arrays so versenden?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz