![]() |
Re: kann bei OnConnect keine TStrings liste übergeben
Delphi-Quellcode:
Mal so versucht? Wobei ich jetzt nicht ganz sicher bin, ob nicht nur der Zeiger auf das Objekt übertragen wird. In dem Fall muss man sich etwas anderes überlegen.
Nachricht.Nickname := 'Hello';
Nachricht.More := TStringList.Create; try Nachricht.More.Assign(Listbox1.Items); Socket.SendBuf (Nachricht, SizeOf(Nachricht)); finally Nachricht.More.Free; end; |
Re: kann bei OnConnect keine TStrings liste übergeben
Danke, geht aber auch nicht :(
Normale strings zu senden und zu empfangen geht ganz einfach, aber das ist nicht so leicht. |
Re: kann bei OnConnect keine TStrings liste übergeben
Das hatte ich befürchtet. Du wirst wohl nur den Objektzeiger übergeben.
|
Re: kann bei OnConnect keine TStrings liste übergeben
Also ich hab das vorher falsch eingefügt sorry.
Jetzt geht es schon weiter und die adress violation kommt jetzt später wenn es das macht:
Delphi-Quellcode:
das geht auch nicht:
Listbox1.Items.AddStrings(Nachricht.More);
Delphi-Quellcode:
obwohl ich oben before
Listbox1.Items.Assigns(Nachricht.More);
Delphi-Quellcode:
das gemacht hab
Socket.ReceiveBuf (Nachricht, SizeOf(Nachricht));
Delphi-Quellcode:
Nachricht.More := TStringList.Create;
|
Re: kann bei OnConnect keine TStrings liste übergeben
In der Nachricht ist More eine Klassenreference. Dies ist nur die Adresse, wo die Klasse liegt aber nichtmal ansatzweise die Adresse wo die Strings liegen. Du versendest einfach nur die Adresse, wo in der Application vom Server die Klasseninstanz liegt. Das bringt dir rein gar nichts, weil ob beim Client eine gültige Instanz an der Stelle liegt ist mehr als fraglich (sirius letzte Aussage: 1 zu 4 Milliarden) und zum anderen würde die Instanz immernoch keine Strings haben - weil die gar nicht übertragen werden.
Versende die Userliste aus dem TStrings Objekt als String. Nutze dazu die Eigenschaft Text um es in die Nachricht als String abzulegen und weise es nach dem Empfang wieder der Text Eigenschaft zu, um wieder eine Liste zu erhalten. |
Re: kann bei OnConnect keine TStrings liste übergeben
Ohh ya :) Vielen dank!
Also zum senden verwende ich jetzt
Delphi-Quellcode:
und zum empfangen
Nachricht.Nickname := 'Hello';
Nachricht.Text := Listbox1.Items.Text; Socket.SendBuf (Nachricht, SizeOf(Nachricht));
Delphi-Quellcode:
Doch im client empfang ich alle namen in einer reihe wie kann ich das ändern?
if Nachricht.Nickname = 'Hello' then begin
Listbox1.Clear; Listbox1.AddItem(Nachricht.Text, NIL); Oder mach ich das alles überhaupt richtig? EDIT: In einem Memo wurde es die zeilenumbrüche mitnehmen, aber nicht in einer Listbox. |
Re: kann bei OnConnect keine TStrings liste übergeben
Gibt es wirklich keinen weg das als TStrings lsit zu senden?
|
Re: kann bei OnConnect keine TStrings liste übergeben
1. Pushen ist erst nach 24 Stunden erlaubt, also lass uns doch erstmal Zeit, deine Beiträge zu lesen. Wir werden hier schliesslich nicht bezahlt für die Arbeit!
2. Du hast es nicht so umgesetzt, wie ich es geschrieben habe. Senden schon, aber beim empfangen weist du es nicht der Text Property zu. |
Re: kann bei OnConnect keine TStrings liste übergeben
Oh, Sorry!
Ich mach daran jetzt schon lange herum. Kannst du mir bitte sagen wie es geht? |
Re: kann bei OnConnect keine TStrings liste übergeben
auch beim senden macht er es noch falsch. Er sendet weiterhin die Objectreferenz "Nachricht" und nicht den Text "Nachricht.Text".
Delphi-Quellcode:
auf der Gegenseite dann genau so wieder empfangen.
var
lText: String; begin lText := ListBox1.Items.Text; Socket.SendText(lText, Length(lText)); Allerdings machst du seit her wohl einen großen Fehler. Du sendest die Daten ohne irgend ein bestimmtes Format. Das heißt wenn 2 Nachrichten kurz hintereinander gesendet werden kann es schnell mal passieren das diese als eine große Nachricht ankommen. Du müsstest dir also noch ein protokoll oder eine maskierung überlegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 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