AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Chat mit TURBO DELPHI
Thema durchsuchen
Ansicht
Themen-Optionen

Chat mit TURBO DELPHI

Ein Thema von user47511 · begonnen am 21. Jul 2008 · letzter Beitrag vom 22. Jul 2008
Antwort Antwort
Seite 1 von 3  1 23      
user47511
(Gast)

n/a Beiträge
 
#1

Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 00:49
Heyho ich bin neu hier wie man ja sieht und habe schon ein Problem...
Ich hab versucht mit dem TCPClient und Server Sockeln einen Chat hin zu bekommen!

So sieht mein Source aus:
Delphi-Quellcode:
unit Chat_unit;

interface

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

type
  TForm2 = class(TForm)
    MemoRecive: TMemo;
    EdNick: TEdit;
    EdIp: TEdit;
    EdPort: TEdit;
    BtnSend: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    MemoSend: TMemo;
    BtnConnect: TButton;
    ClientSocket: TTcpClient;
    procedure BtnConnectClick(Sender: TObject);
    procedure ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
      var DataLen: Integer);
    procedure BtnSendClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  EdPort : string ;

implementation

{$R *.dfm}

procedure TForm2.BtnConnectClick(Sender: TObject);
begin
begin
ClientSocket.RemoteHost:=EdIP.Text; //Die IP wird festgelegt
ClientSocket.RemotePort:= EdPort.text; //Der Port wird festgelegt
ClientSocket.Open; //Verbindung zum Server wird hergestellt
end;
end;

procedure TForm2.BtnSendClick(Sender: TObject);
begin
 ClientSocket.Sendln(BTNSEND.caption);
end;

procedure TForm2.ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
begin;
end;
var
msg: String;
clientsocket : ttcpclient;
memorecive : Tmemo;
begin;
  msg := Clientsocket.Receiveln(MsG);
  memorecive.Lines.Add(MSG);
end.
Ich weiss... sehr unaufgeräumt
Ist aber auch egal...

Wenn ich das jetzt teste bekomme ich eine Fehlermeldung über eine
Zugriffsverletzung!!

Ich weiss nicht wie ich das wegbekomme und wie ich nun weitermachen soll!

  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 01:14
Hi,

hier scheint mir irgendwas merkwürdig
Delphi-Quellcode:
procedure TForm2.ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
begin;
end;
var
msg: String;
clientsocket : ttcpclient;
memorecive : Tmemo;
begin;
  msg := Clientsocket.Receiveln(MsG);
  memorecive.Lines.Add(MSG);
end.
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von PaddyL
PaddyL

Registriert seit: 23. Nov 2007
Ort: Lautertal
34 Beiträge
 
#3

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 05:57
Zitat von .Bartipapi:
Ich weiss... sehr unaufgeräumt
Ist aber auch egal...
Nein, ist es nicht, sonst waere so ein Fehler gar nicht erst aufgetaucht.

Delphi-Quellcode:
procedure TForm2.ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
var
  msg: String;
  clientsocket : ttcpclient;
  memorecive : Tmemo;
begin
  msg := Clientsocket.Receiveln(MsG);
  memorecive.Lines.Add(MSG);
end;

end.
Ach und nur so: Der Code wird auch so nicht gehen, da memorecive nicht initialisiert ist, geschweigedenn das es irgendwie sichtbar ist.
Patrick
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 07:28
Zitat von PaddyL:
Nein, ist es nicht, sonst waere so ein Fehler gar nicht erst aufgetaucht.
Jupp, das kann ich auch nur nochmal bestätigen. Programmiert man von vornherein sauber hat man viele schwierigkeiten weniger

Zitat:
Ach und nur so: Der Code wird auch so nicht gehen, da memorecive nicht initialisiert ist, geschweigedenn das es irgendwie sichtbar ist.
Ich tippe mal, dass das in der DFM initilisiert ist und daher sehr wohl zur Verfügung steht
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 10:17
Neee, das glaube ich nicht denn:

Delphi-Quellcode:
unit Chat_unit;

....

type
  TForm2 = class(TForm)
    MemoRecive: TMemo; // <- Das ist auf dem Form

...

procedure TForm2.ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
begin;
end;
var
msg: String;
clientsocket : ttcpclient;
memorecive : Tmemo; // <- Das nicht. Und....
begin;
  msg := Clientsocket.Receiveln(MsG);
  memorecive.Lines.Add(MSG); // <- ...hier wird es verwendet :(
end.
Was mich eigentlich am meisten wundert ist, daß es kompiliert.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 10:23
Lokale Variablen überdenken globale und deswegen wir es wohl auch keinen Fehler geben.

Richtig wäre es entweder die lokale Variable zu löschen oder richtig zu initialisieren mit MyMemo := TMemo.Create(self); Und dann noch dafür zu sorgen dass es eine Position und größe und so hat.
Fabian E.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 10:30
oh,

hatte nur das auf der form gesehen... na ich glaube da ist jetzt vielleicht doch mal ein dezenter Hinweis auf Grundlagentutorials angemessen, da in dem Bereich ja doch ein paar fehler im Source zu sehen sind : http://www.delphi-treff.de/tutorials/

Ansonsten noch ein Tipp um Fehler durch unformatierten Code zu vermeiden: Es gibt schöne Codeformatter die dir genau diese Arbeit abnehmen. http://www.google.de/search?hl=de&rl...nG=Suche&meta=

Gruß
Ansgar
  Mit Zitat antworten Zitat
user47511
(Gast)

n/a Beiträge
 
#8

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 10:57
Danke für die ganzen schnellen Antworten!
Ich denke ich fang damit nochmal von vorne an und les die Grundlagen!
Danke nochmal
  Mit Zitat antworten Zitat
user47511
(Gast)

n/a Beiträge
 
#9

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 12:13
So ich hab jetzt ein bisschen rumprobiert und erstmal alles was nicht geht rausgestrichen.
Dann habe ich versucht das ganze noch per Hand aufzuhübschen!
So sieht jetzt der Source vom Client aus:
Delphi-Quellcode:
unit Chat_unit;

interface

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

type
  TForm2 = class(TForm)
    MemoRecive: TMemo;
    EdNick: TEdit;
    EdIp: TEdit;
    EdPort: TEdit;
    BtnSend: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    MemoSend: TMemo;
    BtnConnect: TButton;
    ClientSocket: TTcpClient;
    procedure BtnConnectClick(Sender: TObject);
    procedure ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
      var DataLen: Integer);
    procedure FormCreate(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  EdPort : string ;

implementation

{$R *.dfm}

procedure TForm2.BtnConnectClick(Sender: TObject);
begin
begin
ClientSocket.RemoteHost:=EdIP.Text; //Die IP wird festgelegt
ClientSocket.RemotePort:= EdPort.text; //Der Port wird festgelegt
ClientSocket.Open; //Verbindung zum Server wird hergestellt
if ClientSocket.Active = true then
    BtnSend.Enabled := true;

end;
end;

procedure TForm2.ClientSocketReceive(Sender: TObject; Buf: PAnsiChar;
  var DataLen: Integer);
begin;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
BtnSend.Enabled := false;
end;

end.
Und dann habe ich noch den Server:
Delphi-Quellcode:
interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Serversocket: TTcpServer;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
Serversocket.Active := False;
Application.Terminate;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
ServerSocket.LocalPort := '23';
  ServerSocket.Active := True;
end;
end.
Ist alles soweit in Ordnung?
Wenn ja, wie soll ich da jetzt weitermachen?!

  Mit Zitat antworten Zitat
Benutzerbild von Diamondback2007
Diamondback2007

Registriert seit: 2. Feb 2007
260 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Chat mit TURBO DELPHI

  Alt 21. Jul 2008, 12:51
Du kannst dir ja mal das Tutorial von Narses aus dem DF ansehen: Klick!
Fabian E.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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