Registriert: Sa Jan 04, 2003 21:23 Beiträge: 674 Wohnort: Köln
aalso, ich hab folgendes Problem:
ich baue eine Verbindung zwischen einem Clientsocket und einem Serversocket auf...
dann habe ich ein record was so aussieht:
Code:
type TNetworkpaket =record
text:string[20];
data: TSpieler;
end;
(ist noch nicht endgültig, sollte aber erstmal zum testen dienen)
wenn ich nun z.B: vom Client an den Server die DAten so schicke:
Code:
Paket.text:='CSpieler';
Paket.data:=SBS.Spieler;
CSocket.Socket.SendBuf(Paket,sizeof(Paket));
und so empfange:
Code:
Socket.ReceiveBuf(paket,socket.ReceiveLength);
tempstring:=paket.text;
tempspieler:=paket.spieler;
der Text wird richtig übertragen, die Spielerklasse aber nicht...
woran kann das liegen?? (an einem dynamischen array, was ich da drin habe... )
im Anhang mal die WErte die z.B. ankommen (es wurden "richtige" Werte abgeschickt, z.B. nicht so ein kryptischer Name)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wenn TSpieler eine Klasse ist, dann ist data ein Zeiger auf das Object. Es wird dann auch nur der Zeiger kopiert und der ist dann natürlich auf dem anderen Rechnern nicht gültig. Dynamische Arrays sind auch Zeiger und können so auch nicht kopiert werden.
Registriert: Sa Jan 04, 2003 21:23 Beiträge: 674 Wohnort: Köln
klingt plausibel... das dynamische array brauche ich nicht unbedingt, von daher ist der Inhalt von dem egal, solange der REst richtig übertragen werden würde...
kann ich die Klasse irgendwie selber übertragen (nicht als zeiger) oder muss ich jeden Wert einzeln schicken (bzw ein record anlegen, der die gleichen Variablen enthält, den ich dann verschicke)
Ein Record ist die beste Möglichkeit. Allerdings darf der dann keine dynamischen Arrays oder lange Strings enthalten, weil die Felder dann falsch überschrieben würden und nicht mehr richtig verwaltet werden könnten. Eine andere Idee ist die published Properties einer Klasse mit den Funktionen aus der Unit typinfo auszulesen und zu versenden. Dann kann man alles Objekte beim Versenden gleich behandeln.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.