Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Double über Netzwerk senden! (https://www.delphipraxis.net/12486-double-ueber-netzwerk-senden.html)

Maximus 28. Nov 2003 12:15


Double über Netzwerk senden!
 
Ich möchte, für ein Netzwerk Spiel eine Koordinate Y (ist ja vom Typ Double soviel ich weiß) mit den Indy Komponenten (ClientSocket <-> ServerSocket) versenden

Ich sende es so(an Client):
ServerSocket1.Socket.Connections[0].sendtext(FLoattoStr(Player.Y));

Der gesendete Text wird dan mit ReceiveText im onread wieder abgerufen.

Nun setzt ich die Koordinate für den Player: Player.Y := StrtoFloat(ReceiveText);

Wenn ich es aber nun ausprobier, und eine Taste drücke um den Y wert des Players im Server zu verändern und dann die veränderung an den Client schicke kommt dort eine Fehlermeldung:
'eine lange Zahl mit vielen Kommas' is not a valid floating point value


--> was mach ich falsch? -> Oder kann man den Inhalt einer Variable vom Typ Double direkt senden ohne es in ein String umzuwandeln?

Mirilin 28. Nov 2003 12:21

Re: Double über Netzwerk senden!
 
:hi:

Wenn Player vom Typ TPoint ist, dann dürftest du mit Player.Y := StrToFloat(weissichwass) Probleme kriegen, da TPoint etwa so aussieht

Delphi-Quellcode:
TPoint = record
  X : Integer;
  Y : Integer;
end;
Meinses Wissens ist TPoint aus 2Integern aufgebaut.


mfg Tobias

Maximus 28. Nov 2003 12:26

Re: Double über Netzwerk senden!
 
Player ist so definiert

Delphi-Quellcode:
 TPlayer = class(TImageSprite)
 end;
-> benutze DelphiX

Maximus 28. Nov 2003 14:26

Re: Double über Netzwerk senden!
 
Hatte keiner das Problem schonmal? -> Oder weiß wie man so eine Kommazahl übers netzwerk richtig verschickt (abruft)!

Kamil 28. Nov 2003 14:29

Re: Double über Netzwerk senden!
 
Du kannst ein double direkt verschicken:
Delphi-Quellcode:
var
  x: double;
begin
  x:=1.2345;
  ClientSocket.Socket.SendBuf(x, sizeof(double));
und auch empfangen:
Delphi-Quellcode:
var
  x: double;
begin
  Socket.ReceiveBuf(x, sizeof(double));

Maximus 28. Nov 2003 14:53

Re: Double über Netzwerk senden!
 
irgendwie funktioniert das nicht!

[Error] Constant object cannot be passed as var parameter
<--- die fehlermeldung kommt immer, das er das ->
Delphi-Quellcode:
Spiel.Client.Socket.SendBuf(Gegner.Y, sizeof(Gegner.Y));
nicht akzeptiert.

Kamil 28. Nov 2003 15:57

Re: Double über Netzwerk senden!
 
dann mach es doch einfach so:
Delphi-Quellcode:
var
  y: double;
begin
  ...
  y:=Gegner.Y;
  Spiel.Client.Socket.SendBuf(y, sizeof(double));
  ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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