![]() |
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? |
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:
Meinses Wissens ist TPoint aus 2Integern aufgebaut.
TPoint = record
X : Integer; Y : Integer; end; mfg Tobias |
Re: Double über Netzwerk senden!
Player ist so definiert
Delphi-Quellcode:
-> benutze DelphiX
TPlayer = class(TImageSprite)
end; |
Re: Double über Netzwerk senden!
Hatte keiner das Problem schonmal? -> Oder weiß wie man so eine Kommazahl übers netzwerk richtig verschickt (abruft)!
|
Re: Double über Netzwerk senden!
Du kannst ein double direkt verschicken:
Delphi-Quellcode:
und auch empfangen:
var
x: double; begin x:=1.2345; ClientSocket.Socket.SendBuf(x, sizeof(double));
Delphi-Quellcode:
var
x: double; begin Socket.ReceiveBuf(x, sizeof(double)); |
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:
nicht akzeptiert.
Spiel.Client.Socket.SendBuf(Gegner.Y, sizeof(Gegner.Y));
|
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 08:14 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