Entwickler-Ecke
Internet / Netzwerk - RichEdit-Inhalt über Sockets senden
schaumermal - Fr 06.06.08 10:49
Titel: RichEdit-Inhalt über Sockets senden
Hi,
ich habe folgende Frage:
Wie kann ich den Inhalt, den ich in einem TRichEdit Feld habe über eine Socketverbindung vom Client an den Server übertragen.
Aktuell habe ich nur die Möglichkeit gefunden, mit
Delphi-Quelltext
1:
| Socket.SendText('Meldung an den Server'); |
Text zu übertragen. Ich möchte aber auch gerne die Formatierung (fett, unterstrichen, usw.) übertragen.
Es existiert noch die Methode Socket.SendBuf bei der ich aber nicht weis wie ich diese Nutzen könnte um meinen formatieren Text zu übergeben.
Kann mit hierzu jemand einen Hinweise geben?
Danke und Gruß
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 06.06.2008 um 12:01
Moderiert von
Narses: Titel geändert.
iKilledKenny - Fr 06.06.08 10:56
RichText ist kein binäres Format, sondern Text mit "Steuerzeichen". Du kannst das also auch mit den Formatierungen als Text übertragen.
schaumermal - Fr 06.06.08 11:08
Hi,
danke für die Info.
Leider kommt aber auf dem Server der Text ohne Formatierung an.
Auf dem Client sende ich mit
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket.Socket.SendText(fmText.Text); end; |
Auf dem Server empfange ich mit
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); begin fmText.Text:=Socket.ReceiveText; end; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
iKilledKenny - Fr 06.06.08 11:15
Was ist denn fmText bei dir? Das sollte natürlich auch ein RichEdit sein...
P.S.: Habe eben mal in der Doku geschaut, RichEdit.PlainText := False; könnte evtl. helfen...
schaumermal - Fr 06.06.08 11:22
fmText ist das TRichedit
PlainText steht auf False.
Du hast geschrieben, dass
iKilledKenny hat folgendes geschrieben: |
| RichText ist kein binäres Format, sondern Text mit "Steuerzeichen". Du kannst das also auch mit den Formatierungen als Text übertragen. |
Kannst Du mir sagen wie ich ggf. ein binär Format übertragen kann (wenn auch hier ggf. nicht notwendig)?
iKilledKenny - Fr 06.06.08 11:44
Habe nochmal in der Doku geschaut. Mein Delphi 5 RichEdit hat gar keine Property "Text"...
Versuch mal
Delphi-Quelltext
1:
| SetWindowText (fmText.Handle, PChar (Socket.ReceiveText)); |
so funktioniert das zumindest bei mir.
Wegen Übertragung von binären Dateien:
Ich verwende eigentlich immer XML zum Übertragen und wandele deshalb meine binären Daten in Text um, bevor ich sie verschicke...
Narses - Fr 06.06.08 12:11
Moin!
schaumermal hat folgendes geschrieben: |
| Leider kommt aber auf dem Server der Text ohne Formatierung an. |
Probier das mal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); begin var RTF: TStringStream; begin RTF := TStringStream.Create(''); try RichtEdit1.Lines.SaveToStream(RTF); ClientSocket.Socket.SendText(RTF.DataString); finally RTF.Free; end; end; |
Und so lesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var RTF: TStringStream; begin RTF := TStringStream.Create(Socket.ReceiveText); try RichEdit1.Lines.LoadFromStream(RTF); finally RTF.Free; end; end; |
Aber: :mahn:
cu
Narses
//EDIT: :oops:
Fehler im Code korigiert
schaumermal - Fr 06.06.08 14:38
Hi,
danke für Deinen Hinweis.
Allerdings kommt folgende Meldung bei ClientSocket.Socket.SendText(RTF);
[Fehler] USocketClient.pas(101): Inkompatible Typen: 'String' und 'TStringStream'
Narses - Fr 06.06.08 14:40
Moin!
schaumermal hat folgendes geschrieben: |
Allerdings kommt folgende Meldung bei ClientSocket.Socket.SendText(RTF);
[Fehler] USocketClient.pas(101): Inkompatible Typen: 'String' und 'TStringStream' |
Jup, hatte was im Code oben vergessen :? ist aber jetzt mit drin. ;)
cu
Narses
schaumermal - Fr 06.06.08 14:47
Hi,
thx.
Geht wunderbar.
Narses - Fr 06.06.08 15:00
Moin!
Bitte. ;)
Auf die Hinweise achten, die Lösung ist unsauber! :mahn:
cu
Narses
schaumermal - Fr 06.06.08 15:18
Noch eine Nachfrage,
könnte ich auf diesem Weg auch eine Datei übertragen?
Nur zum Verständnis:
Ich muss eine Anwendung erstellen in dem ich über diesen Weg (formatierten Text und ggf. Dateianhang) übertragen kann.
Die Serveranwendung soll mit den empfangenen Daten (also Text und ggf. Dateien) dann mit unserem Exchange Server kommunizieren und Newsletter für unsere Kunden erstellen.
Aus Sicherheitsgründen darf ich nicht direkt mit dem Exchangeserver kommunizieren.
Deswegen möchte ich diese Weg wählen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!