![]() |
Re: Einen Chat mit den Sockets programmieren
Zitat:
ich habe geschaut, kann aber nix finden... |
Re: Einen Chat mit den Sockets programmieren
|
Re: Einen Chat mit den Sockets programmieren
ich komme mit dem tutorial bzw. der erstellung der komponente leider nicht zurecht, hier ist mein quelltext:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, ExtCtrls, ScktComp; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; ComboBox1: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Timer1: TTimer; ApplicationEvents1: TApplicationEvents; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; ScktComp1: TScktComp; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var ScktComp1: TScktComp; begin ScktComp1 := TScktComp1.Create(self); ScktComp1.Parent := Form1; ScktComp1.Show; end; end. beim ausführen wird folgender fehler angezeigt: Unit1.pas(7): Lesefehler bei 'c:\programme\borland\delphi7\Lib\ScktComp.dcu |
Re: Einen Chat mit den Sockets programmieren
Wenn du einen ServerSocket erstellen möchtest, so musst du die globale Variable von Typ TServerSocket definieren, für einen ClientSocket von Typ TClientSocket.
Etwa so:
Delphi-Quellcode:
Und eben immer die Events selbst schreiben :-)
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, ExtCtrls, ScktComp; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; ComboBox1: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Timer1: TTimer; ApplicationEvents1: TApplicationEvents; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; ServerSocket1: TServerSocket; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1 := TServerSocket.Create(nil); ServerSocket1.OnClientRead:=Form1.ServerSocket1ClientRead; ServerSocket1.OnClientConnect:=Form1.ServerSocket1ClientConnect; end; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin //Der Code, der ausgeführt werden soll, wenn ein Text von einem Client ankommt end; procedure ServerSocket1ClientConect(Sender: TObject; Socket: TCustomWinSocket); begin //Der Code, der ausgeführt werden soll, wenn ein Client sich verbindet end; end. |
Re: Einen Chat mit den Sockets programmieren
vielen dank, ich versuche es mal
|
Re: Einen Chat mit den Sockets programmieren
ich habe den quelltext jetzt angepasst, aber es sind noch mindestens 2 probleme da:
ich weis nicht wi und wo ich folgende zeilen aus deinem tutorial einbauen soll: Zitat:
und es kommt immernoch die fehlermaldung "Unit1.pas(7): Lesefehler bei 'c:\programme\borland\delphi7\Lib\ScktComp.dcu" und die 2. zeile der uses wird rot makiert uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, ExtCtrls, ScktComp; hier nochmal der quelltext (verändert) :
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, ExtCtrls, ScktComp; type TForm1 = class(TForm) Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; ComboBox1: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Timer1: TTimer; ApplicationEvents1: TApplicationEvents; procedure FormCreate(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Delay(time: word); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; ServerSocket1: TServerSocket; Label6.Caption:=IdIPWatch1.LocalIP; //Damit oben im Fenster schon beim FormCreate die aktuelle IP-Adresse angezeigt wird Button1.Enabled:=false;//Damit man nicht schon vorher draufdrückt Button2.Enabled:=false;// -''- implementation {$R *.dfm} procedure TForm1.delay(time:word); var Start: Integer; begin Start:=GetTickCount; while (GetTickCount)-(Start) <= time do Application.ProcessMessages; end; procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1 := TServerSocket.Create(nil); ServerSocket1.OnClientRead:=Form1.ServerSocket1ClientRead; ServerSocket1.OnClientConnect:=Form1.ServerSocket1ClientConnect; end; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Form1.Show; Memo1.Lines.Add(Socket.ReceiveText);//Der Code, der ausgeführt werden soll, wenn ein Text von einem Client ankommt end; procedure ServerSocket1ClientConect(Sender: TObject; Socket: TCustomWinSocket); begin //Der Code, der ausgeführt werden soll, wenn ein Client sich verbindet end; procedure TForm1.Button3Click(Sender: TObject); begin Nickname:=Edit3.Text; Button3.Enabled:=false; Edit3.Enabled:=false; Button2.Enabled:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin ClientSocket1.Host:=Edit2.Text; ClientSocket1.Active:=true; Button2.Enabled:=false; Edit2.Enabled:=false; Button1.Enabled:=true; Nachricht:=Edit3.Text+' hat den Raum betreten'; delay(500); ClientSocket1.Socket.SendText(Nachricht); end; procedure TForm1.Button1Click(Sender: TObject); begin if (ClientSocket1.Active=true) and (Edit1.Text<>'')then ClientSocket1.Socket.SendText(NickName+': '+Edit1.Text); Edit1.Text:=''; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label3.Caption:=IdIPWatch1.LocalIP; end; end. |
Re: Einen Chat mit den Sockets programmieren
Tut mir leid, aber ich kann das nich nachvollziehen, bei mir läuft nämlich Alles wie geschmiert. :gruebel:
Mach am besten einen neuen Thread auf, da kann dir sicher geholfen werden ;-) Und der angesprochene Teil des Sourcecodes mus in das OnClose-Event der Hauptform, das muss ich wohl irgendwie übersehen haben :-) |
Re: Einen Chat mit den Sockets programmieren
Kann man die dclsockets70.bpl irgendwo runterladen ? Bei mir is die net dabei :(
MFG |
Re: Einen Chat mit den Sockets programmieren
Nein, kann man nicht, aber ich hab doch schon geschrieben, wie du die Sockets mit Delphi 7 PE nutzen kannst:
Dynamisch per Hand zur Laufzeit erzeugen ;-) Was'n Satz :mrgreen: |
Re: Einen Chat mit den Sockets programmieren
Häää :gruebel: Wo steht des *nix mehr ceckt*
:freak: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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