Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi String über Socket senden (https://www.delphipraxis.net/184384-string-ueber-socket-senden.html)

strom 21. Mär 2015 15:15

String über Socket senden
 
Hallo möchte gerne mit Delphi
einen String mit SocketClient1 senden.

Es gibt ein Beispiel für Java
Code:
public class ServerTest {
 public static void main(String[] args) throws Exception {
   StringBuffer buf = new StringBuffer();
   buf.append("<event>\n");// Start-Tag
   buf.append(String.format("<address>%s</address>\n", "123test"));// Code
   buf.append(String.format("<message>%s</message>\n", "Hello World"));// Text
   buf.append("</event>");// End-Tag
   try {
          Socket socket = new Socket("localhost", 5555);// 5555 = Default-Port
          OutputStream os = socket.getOutputStream();
          BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
          bw.write(buf.toString());
          bw.flush();
          bw.close();
          os.close();
   } catch (Exception e) {
          e.printStackTrace();
   }
 }
}
Wenn ich mir das Beispiel von Java anschaue, wird der String aufgeteilt!
Wie mache ich das?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
   var
 s: String;
begin
   s := (String.format("<address>%s</address>\n", "123test"));
   ClientSocket1.Socket.SendText(s);
end;

Zacherl 21. Mär 2015 16:04

AW: String über Socket senden
 
Der String wird nicht aufgeteilt, sondern zusammengesetzt. Kannst es folgendermaßen nachbauen:
Delphi-Quellcode:
String.Format(
    '<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',
    ['123', 'Text']);

himitsu 21. Mär 2015 16:05

AW: String über Socket senden
 
Die Delphi-Syntax kennst du aber?

\n gibt es so nicht in Delphi
" ist garantiert nicht das Quotierungszeichen für Pascal-Strings
Wie man beim Format die Parameter angibt, solltest du wissen und wenn doch nicht, dann siehe F1
Und nein, wo wird da denn was aufgeteilt? Im Gegenteil, jemand kommt auf die saublöde Idee und bastelt manuell aus einzelnen Strings eine XML-Datei zusammen.
Delphi-Referenz durchsuchenTStringBuilder



So, aber das Wichtigste, warum verwendest du nicht einfach eine richtige REST-API?

strom 21. Mär 2015 16:55

AW: String über Socket senden
 
Hallo,

wenn ich die Strings durch ein EDit1.Text und Memo1.Text ersetze,
geht es leider nicht mehr.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
    var
  s: String;
begin
    try
       ClientSocket1.Open;
    s := String.Format(
     '<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',
     [Edit1.Text,Memo1.Text]);
    ClientSocket1.Socket.SendText(s);
    finally
      ClientSocket1.Close;
    end;
end;

Zacherl 21. Mär 2015 16:58

AW: String über Socket senden
 
Zitat:

Zitat von strom (Beitrag 1294348)
geht es leider nicht mehr

Sehr präzise :roll:

strom 21. Mär 2015 17:05

AW: String über Socket senden
 
Stimmt:shock:

Das Programm läuft, der Text wird aus dem Memofeld nicht
übernommen.

Hat bestimmt was mit dem Format des Memos zutun oder?

strom 21. Mär 2015 17:11

AW: String über Socket senden
 
Jetzt geht alles ?

Danke

strom 21. Mär 2015 17:55

AW: String über Socket senden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe doch noch ein Problem!

Wenn ich kurze Zeit später erneut was senden möchte,
kommt diese Fehlermeldung!





Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
    var
  s: String;
begin
    try
       ClientSocket1.Open;
    s := String.Format(
     '<event>'#10'<address>%s</address>'#10'<message>%s</message>'#10'</event>',
     [Edit1.Text,Memo1.Text]);
    ClientSocket1.Socket.SendText(s);
    ClientSocket1.Close;
    Edit1.Clear;
    Memo1.Clear;
    finally
      ClientSocket1.Free;
    end;
end;

himitsu 21. Mär 2015 17:59

AW: String über Socket senden
 
Wundert mich nicht. :roll:
Zitat:

Delphi-Quellcode:
finally
  ClientSocket1.Free;
end;


Sir Rufo 21. Mär 2015 18:01

AW: String über Socket senden
 
Immer die gleichen:

Erst die Mutter vor die Tür setzen und sich hinterher beschweren, weil die Bude nicht mehr aufgeräumt wird ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Seite 1 von 3  1 23      

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