AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Record mit dynamischen Strings versenden

Ein Thema von luke2 · begonnen am 23. Okt 2012 · letzter Beitrag vom 24. Okt 2012
Antwort Antwort
luke2

Registriert seit: 17. Jun 2009
117 Beiträge
 
#1

Record mit dynamischen Strings versenden

  Alt 23. Okt 2012, 22:15
Delphi-Version: XE2
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:
type
  TData = record
    I: Integer;
    R: Real;
    S1: string[50]; //OK
    S2: ShortString; //OK
    S3: string; //geht nicht
  end;

SendBuffer(Socket, Data, SizeOf(Data));
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.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Record mit dynamischen Strings versenden

  Alt 23. Okt 2012, 22:53
sauber Serialisieren
also vor den String die Länge schicken ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.228 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Record mit dynamischen Strings versenden

  Alt 23. Okt 2012, 23:18
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.113 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Record mit dynamischen Strings versenden

  Alt 24. Okt 2012, 12:32
@ luke2
Evtl. kannst Du hier mal mitlesen und eine Anregung entnehmen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf