Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   brauche hile beim chat (https://www.delphipraxis.net/65458-brauche-hile-beim-chat.html)

misterx 16. Mär 2006 18:20


brauche hile beim chat
 
Client:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    ClientSocket1: TClientSocket;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host := Edit1.text;
ClientSocket1.Active := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Server:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    ServerSocket1: TServerSocket;
    procedure Button1Click(Sender: TObject);
    procedure ServerSocket1ClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Socket.SendText(Edit1.Text);
end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
Showmessage('Server Error!');
end;

end.
mein kolege meinte das soll noch mit rein habe aber kp wohin ich das tun soll:
Delphi-Quellcode:
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
  ServerSocket1.Socket.Connections[0].SendText(ReceivedText);
kann mir da einer weiter helfen
danke im voraus

BenjaminH 16. Mär 2006 18:24

Re: brauche hile beim chat
 
Das muss in
ServerSocket1ClientWrite
vermute ich, ich hab die Ereignisse grad nichtmehr ganz im Kopf, aber ich glaub des stimmt..

misterx 16. Mär 2006 18:26

Re: brauche hile beim chat
 
aber de q text schtimt dan soweit oder?

PierreB 16. Mär 2006 18:32

Re: brauche hile beim chat
 
Du gibst dir wieder alle Mühe gegen alle Rechtschreibregeln zu verstoßen, oder ?

Sharky 16. Mär 2006 18:43

Re: brauche hile beim chat
 
Hai misterx,

es wäre schon von Vorteil wenn Du sagen würdest wo denn dein Problem ist.
Einfach einen Code zu zeigen und zu sagen "... mein Kollege meint..." hilft nicht weiter.

P.S.: Ich persönlich finde es angenehmer wenn ich zuerst etwas über das Problem lese und dann den Code darunter sehe.
Ich habe nämlich keine Lust mir irgendwelchen Code anzusehen wenn ich nicht weiss warum ich das machen sollte ;-)

misterx 16. Mär 2006 19:34

Re: brauche hile beim chat
 
also ich versuche es dan anders ich schreibe ein chat mein kolege hat mir dabei geholfen leider ist er nicht mehr online und deswegen kann ich ihn nicht um hilfe bitten
meine frage an euch ist ob ich das alles soweit richtig gemacht habe und was mir noch fehlt

BenjaminH 16. Mär 2006 19:37

Re: brauche hile beim chat
 
Versuchs doch einfach, wenn der Chat funktioniert, hast du alles richtig gemacht.

misterx 16. Mär 2006 19:40

Re: brauche hile beim chat
 
habe ich da kamm immer ein soket fehler (kp mehr welcher bin nicht zuhause)

Zacherl 16. Mär 2006 20:04

Re: brauche hile beim chat
 
Delphi-Quellcode:
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
  ServerSocket1.Socket.Connections[0].SendText(ReceivedText);
Ist Schwachsinn!

Delphi-Quellcode:
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
  ServerSocket1.Socket.Connections[i].SendText(Socket.ReceivedText);
So muss es wenn schon heißen. Vorher werden in einer Schleife alle Connections durchgegengen, der Text aber immer an den Index 0 gesendet.
Wenn man diese 0 durch i ersetzt bekommen auch alle Clients die Nachricht.
//Edit: ReceivedText gibt es nicht. Es muss Socekt.ReceivedText heißen.

Das ganze kommt natürlich ins OnRead Ereigniss des Servers.

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
Ist genauso Schwachsinn! Wieso willst du den Text, den du grade an die Clients weitersendest im OnWrite Ereigniss zum Memo hinzufügen? Das muss natürlich auch gemacht werden, aber ich denke eher, dass du mit
Delphi-Quellcode:
Socket.ReceiveText
den empfangenen Text direkt hinzufügen willst.
Daher solltest du die Zeile
Delphi-Quellcode:
Memo1.Lines.Add(Socket.ReceiveText);
auch ins OnRead und nicht ins OnWrite Ereigniss schreiben. :wink:

Ach ja ... und vermeide bitte wenigstens so unnötige Fehler, wie "brache hile beim chat". Und schöner sieht dein geposteter Text auf jeden Fall auch aus, wenn du deine Shift Taste ab und zu mal benutzt ...


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