![]() |
Chat mit TURBO DELPHI
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:
Ich weiss... sehr unaufgeräumt
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. 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! :wiejetzt: |
Re: Chat mit TURBO DELPHI
Hi,
hier scheint mir irgendwas merkwürdig :wink:
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. |
Re: Chat mit TURBO DELPHI
Zitat:
Delphi-Quellcode:
Ach und nur so: Der Code wird auch so nicht gehen, da memorecive nicht initialisiert ist, geschweigedenn das es irgendwie sichtbar ist.
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. |
Re: Chat mit TURBO DELPHI
Zitat:
Zitat:
|
Re: Chat mit TURBO DELPHI
Neee, das glaube ich nicht denn:
Delphi-Quellcode:
Was mich eigentlich am meisten wundert ist, daß es kompiliert. :)
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. Sherlock |
Re: Chat mit TURBO DELPHI
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
Delphi-Quellcode:
Und dann noch dafür zu sorgen dass es eine Position und größe und so hat.
MyMemo := TMemo.Create(self);
|
Re: Chat mit TURBO DELPHI
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 :) : ![]() Ansonsten noch ein Tipp um Fehler durch unformatierten Code zu vermeiden: Es gibt schöne Codeformatter die dir genau diese Arbeit abnehmen. ![]() Gruß |
Re: Chat mit TURBO DELPHI
Danke für die ganzen schnellen Antworten!
Ich denke ich fang damit nochmal von vorne an und les die Grundlagen! Danke nochmal |
Re: Chat mit TURBO DELPHI
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:
Und dann habe ich noch den Server:
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.
Delphi-Quellcode:
Ist alles soweit in Ordnung?
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. Wenn ja, wie soll ich da jetzt weitermachen?! :gruebel: |
Re: Chat mit TURBO DELPHI
Du kannst dir ja mal das Tutorial von Narses aus dem DF ansehen:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz