AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Stringlist mit SendStream versenden
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlist mit SendStream versenden

Ein Thema von runningsoft · begonnen am 10. Feb 2017 · letzter Beitrag vom 11. Feb 2017
Antwort Antwort
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Stringlist mit SendStream versenden

  Alt 11. Feb 2017, 08:56
Genau das ist ja mein Problem. Wie bekomme ich den Inhalt der Stringlist versendet und nicht nur den Zeiger darauf.

Ich hatte es zwischenzeitlich über TByteArray versucht. Ich habe die Stringlist also Byte für Byte in das Bytearray eingelesen und versendet. Hat auch funktioniert, hat allerdings den Nachteil, dass das Bytearray ein statisches Array ist und eine feste Größe von 32767 Byte hat, die Stringlistes aber nicht annähernd diese Größe erreicht. Ist also nicht so ganz befriedigend.

Anschließend hab ich es mit einem dynamischen Array aus TBYTE versucht. Da das aber ein dynamisches Array ist, stehe ich vor dem gleichen Problem wie mit der Stringlist, es werden nur die Zeiger versendet, nicht aber der Inhalt.

Für einen Tipp und ein paar Codeschnipsel, wie ich den Inhalt der Stringlist auf der Clientseite aufbereiten muss, um ihn zu versenden und auf der Serverseite wieder in eine Stringliste hineinbekomme, wäre ich dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.679 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Stringlist mit SendStream versenden

  Alt 11. Feb 2017, 09:28
Genau das ist ja mein Problem. Wie bekomme ich den Inhalt der Stringlist versendet und nicht nur den Zeiger darauf.
Ich wuerde stringlist.Text versenden. Beim Emfpaenger dann im neuen Record eine Stringlist anlegen (der dort gespeicherte Pointer ist ja ungueltig, also einfach eine neue erzeugen und zuweisen) und dieser den empfangenen Text zuweisen.
Thomas Mueller
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#3

AW: Stringlist mit SendStream versenden

  Alt 11. Feb 2017, 15:42
Du kannst den Record nicht komplett senden, sondern musst den String gesondert behandeln. Die Stringliste ist dann nicht mehr Bestandteil des Records, sondern wird mit einem zweiten Schreibbefehl zu dem MemoryStream hinzugefügt. Auf der Empfangsseite muss das Ganze wieder entsprechend zerlegt werden.
Delphi-Quellcode:
  
type
CustomRec = record
   RecID : Integer;
   RecVorgang : String[15];
   RecStatus: integer;
   ....
   RecStrLen: Integer; //<- damit weiß ich auf der Empfangsseite wie lang der der nachfolgende Text ist
  end;
...
  temp := Stringlist.Text;
  RecStrLen := Length(temp);
  MStr.Write(Rec,SizeOf(Rec));
  MStr.Write(Pointer(temp)^, Length(temp));
  MStr.Position := 0;
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:04 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