Zeilenumbruch
-
Hi
Wäre nett, wenn mir jemand sagen könnte, wie ich in ein Memo einen Zeilenumbruch bekomme.
Ich habe vor, einen chat zu schreiben, aber die ausgabe sieht immer so aus:
NICK SAGT: XXXXX
Es soll aber so aussehen:
NICK SAGT:
XXXXXXhier ist der teil im source, in dem die nachricht verschickt wird:
[cpp]ServerSocket1->Socket->Connections[0]->SendText((nick->Text)+(Memo2->Text));[/cpp]
Danke schonmal

schnurres
-
Siehe Escapesequenzen
alsoAnsiString tmp = Nick->Text + "\n" + WeitererText;Gruss
-
Hallo
das reicht unter windows aber nicht aus, sondern da muß es so aussehen
AnsiString tmp = Nick->Text + "\r\n" + WeitererText;bis bald
akari
-
Danke euch beiden. Hat geklappt.
Was würde ich nur ohne dieses Forum hier machen

Jetzt habe ich noch eine Frage:
Kann man irgendwie die Anzahl der connecteten Pcs bestimmen?
Wenn ja, wie ?Danke

-
...ja, mit ActiveConnections.
-
also ehrlich gesagt, habe ich jetzt ganz den überblick über die 2 programme verloren

Ich habe vor, den SERVER(Programm) auf meinem Server(pc) zu starten, damit MEHRERE clienten connecten können.Leider funktioniert das aber noch nicht. Kann mir jemand helfen??hier der Quellcode von beiden Dateien:
SERVER:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ServerSocket1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1Accept(TObject *Sender, TCustomWinSocket *Socket) { Label2->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add(Socket->ReceiveText()); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(Memo2->Text != ""); { ServerSocket1->Socket->Connections[0]->SendText((nick->Text)+"sagt:\r\n"+(Memo2->Text)); Memo1->Lines->Add((nick->Text)+"\r\n"+(Memo2->Text)); Memo2->Text = ""; Memo2->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) { Label2->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo2KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == VK_RETURN) { ServerSocket1->Socket->Connections[0]->SendText((nick->Text)+ " sagt: \r\n"+(Memo2->Text)); Memo1->Lines->Add((nick->Text) + " sagt: \r\n"+(Memo2->Text)); Memo2->Text = ""; Memo2->SetFocus(); } }CLIENT:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" const int freePort = 5000; AnsiString freeHost; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Image5->Visible = false; } //-------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { ShowMessage("Kein Server gefunden"); Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { Label4->Visible = false; Image4->Visible = false; Image5->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { Memo2->Lines->Add(Socket->ReceiveText()); } //--------------------------------------------------------------------------- void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key == VK_RETURN) { if(nick->Text == "") { ShowMessage("Bitte zuerst einen Nickname eingeben"); } else { ClientSocket1->Socket->SendText((nick->Text)+" sagt:\r\n"+(Memo1->Text)); Memo2->Lines->Add((nick->Text)+" sagt:\r\n"+(Memo1->Text)); Memo1->Text = ""; Memo1->SetFocus(); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2Click(TObject *Sender) { if((ip-Text.Length()) > 0) { freeHost = ip->Text; ClientSocket1->Host = freeHost; ClientSocket1->Active = true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender, TCustomWinSocket *Socket) { Label4->Visible = true; Image4->Visible = true; Image5->Visible = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image3Click(TObject *Sender) { ClientSocket1->Active = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image7Click(TObject *Sender) { if(Memo1 != "") { ClientSocket1->Socket->SendText((nick->Text)+" sagt:\r\n"+(Memo1->Text)); Memo2->Lines->Add((nick->Text)+" sagt:\r\n"+(Memo1->Text)); Memo1->Text = ""; Memo1->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image6Click(TObject *Sender) { ClientSocket1->Close(); Close(); }Danke

-
WAS genau funktioniert denn nicht?
Habe Deinen Code schnell überflogen und gesehen, dass der Server Informationen über Connections[0] versendet. Das heisst ja, dass nur der erste Client etwas empfängt und alle anderen gehen leer aus. Du musst das Senden des Sockets mit z.B. Hilfe einer Schleife und ActiveConnections lösen.Weiterhin ist mir aufgefallen, dass ein Client, der Text sendet, diesen lediglich an den Server schickt. Dort müsste der Server dann diesen Text an alle Clients weiterversenden(siehe oben).
Gruss
-
ok so langsam verstehe ich das ganze.
Nur ich bekomme das mit dem verbindungen nicht hin.
die for-schleife muss ja so in etwa aussehn:
for(int i = 0;0 =< ANZAHL DER VERBINDUNGEN;i++) { ServerSocket1->Socket->Connections[i]->SendText((nick->Text)+"sagt:\r\n"+(Memo2->Text)); }mein Problem ist jetzt, dass ich nicht genau weiß, was ich für "ANZAHL DER VERBINDUNGEN" einsetzen soll.
Mit ActiveConnections habe ich es auch schon versucht, aber ohne erfolg
-
Ok..., so müsste es aussehen:
int Verbindungen = ServerSocket1->Socket->ActiveConnections; for(int x = 0; x <= Verbindungen - 1; x++) ServerSocket1->Socket->Connections[x]->SendText("Dein Text");Gruss Rostfrei[]
-
Was hat das mit dem Zeilenumbruch zu tun?
Bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!
-
ok werde ich das nächste mal beachten.
Ich habe das Problem auch gelöst. Danke an alle.