![]() |
Delphi-Version: XE2
Record mit dynamischen Strings versenden
Hi,
wenn man ein Record per Socket versenden möchte, der Strings enthält, müssen diese ja eine feste Länge haben.
Delphi-Quellcode:
Da die zu versendenden Strings unterschiedlich lang sein können, muss immer der worst-case (bsp. ShortStrings, also 255 Zeichen) angenommen werden. Bei kurzen Strings ist die Datenmenge damit viel größer als nötig.
type
TData = record I: Integer; R: Real; S1: string[50]; //OK S2: ShortString; //OK S3: string; //geht nicht end; SendBuffer(Socket, Data, SizeOf(Data)); Natürlich könnte ich alle Strings mit einem Trennzeichen zusammenfassen und dann versenden, diese Lösung erscheint mir aber nicht sonderlich sauber und deshalb wollte ich fragen, ob es eine bessere Lösung gibt ein Record mit dynamischen Strings per Socket zu senden? |
AW: Record mit dynamischen Strings versenden
sauber Serialisieren
also vor den String die Länge schicken ... |
AW: Record mit dynamischen Strings versenden
Nja, man könnte zwar den Record versenden und die dynamischen Strings getrennt davon, aber bei Empfangen muß man auf die internen Zeiger der dynamischen stuckturen aufpassen, damit man sich nicht das Speichermanagement zerschießt.
Die Daten schön handlich in/aus einen TReader/TWriter serialisieren? Oder du nimmst einfach ein statisches Array[..] of Char. |
AW: Record mit dynamischen Strings versenden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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