Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TStringList übermitteln (https://www.delphipraxis.net/45923-tstringlist-uebermitteln.html)

mangaka 14. Mai 2005 15:45


TStringList übermitteln
 
moin,
wie ihr schon im betreff erkennen könnt, möchte ich eine strigliste im netzwerk übermitteln.
ich brauch das für mein chatprogri-> anzeigen, wer alles im channel ist.
ich hab mir das so gedacht:
da joint einer den servern und übermittelt seinen namen, diese daten werden vom server dann gespeichert.
und wenn jemand neu gejoint hat, schickt der server an alle eine stringlist mit den daten.

es würd alles schön funktionieren würd ich es nur schaffen, diese verdammte liste an EINEM STÜCK(einzeln geht das nämlich nicht bzw habe es bis jetzt nicht geschafft) zu übermitteln. :wall:

hoffentlich wisst ihr weiter, thx im vorraus
ps.:
ich benutze d7pe und die delphi komponenten

alcaeus 14. Mai 2005 15:48

Re: TStringList übermitteln
 
Hallo mangaka,

Zitat:

Zitat von mangaka
es würd alles schön funktionieren würd ich es nur schaffen, diese verdammte liste an EINEM STÜCK(einzeln geht das nämlich nicht bzw habe es bis jetzt nicht geschafft) zu übermitteln. :wall:

Im Netzwerk wird es NIE in einem Stueck ankommen, bzw. wuerde ich nicht davon ausgehn. Wenn du aber den gesamten Inhalt auf einmal losschicken willst, verwende Delphi-Referenz durchsuchenTStringList.Text

Zitat:

Zitat von mangaka
ich benutze d7pe und die delphi komponenten

Ach was....Delphi-Komponenten in Delphi? :shock: :zwinker:
Ich denke du meinst die Socket-Komponenten. In dem Fall, sende einen String mit TStringList.Text an den Client oder den Server, und setze das Ding im OnRead-Ereignis wieder zusammen.

Greetz
alcaeus

Muetze1 14. Mai 2005 15:51

Re: TStringList übermitteln
 
Moin!

Lass mich raten: Du bekommst in mehreren OnClientReads die Teile der StringList? Du selber versendest die TStringList über die Eigenschaft Text?

Falls ja, kann ich mich nur wiederholen: Es gibt nirgendwo auch nur die geringste Garantie, das einzelne SendText() Inhalte als komplettes und genauso separiert auch wieder empfangen werden. Im Normalfall musst du einen Empfangsbuffer bauen wodrin du erstmal alles empfangene hinten anhängst - und wenn ein Block fertig ist, diesen verarbeitest. Daher ist ein kleines Protokoll notwendig. Die Sockets interessieren die Daten nicht, sie versenden sie einfach nur - in so viel Einzelteilen wie nötig.

Bei einer schlechten Verbindung kann es im worst-case dazu kommen, dass du jeden Buchstaben einzelnd empfängst - also immer wieder ein OnClientRead() pro Buchstabe. Also stell deine Verarbeitung bei der Bedienung und Behandlung der Sockets entsprechend um, damit mit mit sowas umgehen kannst.

/EDIT: gleicher Inhalt, leider übersehen...

MfG
Muetze1

BenjaminH 14. Mai 2005 15:51

Re: TStringList übermitteln
 
Zitat:

Zitat von mangaka
ich benutze [..] die delphi komponenten

Das sagt richtig viel aus, heißt das du verwendest die Indys? oder die Sockets? oder was sonst?
[Edit] Uuuups jetzt hab ich das von Alcaeus nochmal wiederholt, sorry...
Die Meldung, dass neue Nachrichten geschrieben wurden kommt irgendwie sehr selten

mangaka 14. Mai 2005 16:11

Re: TStringList übermitteln
 
lol sry leute ich meine natürlich:
ps.:
ich benutze d7pe und die INDY komponenten
...war wohl in gedanken vertieft.

also so wie ich das jetzt mitbekommen habe, kann man keine liste rüberschicken.
schade, aber anders bekomme ich das einfach nicht hin.

zuvor habe ich versucht die strings einzelt mit einr for-schleife zu schicken und es wieder in eine liste seitens des clients zu packn , aber das bringt nicht wikrlich was, weil das 1. was ankommt in das memofeld gepackt wird.
(klingt jetzt es würde garkeinprob geben aber(...))

ich probiers ma mit dem vorschlag von
alcaeus


thx

Muetze1 14. Mai 2005 17:19

Re: TStringList übermitteln
 
Moin!

Zitat:

Zitat von mangaka
also so wie ich das jetzt mitbekommen habe, kann man keine liste rüberschicken.
schade, aber anders bekomme ich das einfach nicht hin.

Wieso nicht? Warum sollte das wieso nicht gehen? Hauptsache du schickst die Daten und keine Zeiger...

Zitat:

Zitat von mangaka
zuvor habe ich versucht die strings einzelt mit einr for-schleife zu schicken und es wieder in eine liste seitens des clients zu packn , aber das bringt nicht wikrlich was, weil das 1. was ankommt in das memofeld gepackt wird.
(klingt jetzt es würde garkeinprob geben aber(...))

Mit anderen Worten: Es fehlt dir ein grundlegendes Protokoll...

MfG
Muetze1


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