Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
unitmain; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls; type
TChatForm = class
(TForm) MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; FileConnectItem: TMenuItem; FileListenItem: TMenuItem; StatusBar1: TStatusBar; Bevel1: TBevel; Panel1: TPanel; Memo1: TMemo; Memo2: TMemo; N1: TMenuItem; SpeedButton1: TSpeedButton; Disconnect1: TMenuItem; ServerSocket: TServerSocket; ClientSocket: TClientSocket; procedure
FileListenItemClick(Sender: TObject); procedure
FileConnectItemClick(Sender: TObject); procedure
Exit1Click(Sender: TObject); procedure
Memo1KeyDown(Sender: TObject; var
Key: Word; Shift: TShiftState); procedure
FormCreate(Sender: TObject); procedure
ServerSocketError(Sender: TObject; Number: Smallint; var
Description: string
; Scode: Integer; const
Source, HelpFile: string
; HelpContext: Integer; var
CancelDisplay: Wordbool); procedure
Disconnect1Click(Sender: TObject); procedure
ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); procedure
ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); procedure
ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure
ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); procedure
ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure
ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure
ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var
ErrorCode: Integer); procedure
ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); protected
IsServer: Boolean; end
; var
ChatForm: TChatForm; Server: string
; implementation
{$R *.DFM} procedure
TChatForm.FileListenItemClick(Sender: TObject); begin
FileListenItem.Checked := not
FileListenItem.Checked; if
FileListenItem.Checked then
begin
ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end
else
begin
if
ServerSocket.Active then
ServerSocket.Active := False; Statusbar1.Panels[0].Text := ''; end
; end
; procedure
TChatForm.FileConnectItemClick(Sender: TObject); begin
if
ClientSocket.Active then
ClientSocket.Active := False; if
InputQuery('Computer to connect to', 'Address Name:', Server) then
if
Length(Server) > 0 then
with
ClientSocket do
begin
Host := Server; Active := True; FileListenItem.Checked := False; end
; end
; procedure
TChatForm.Exit1Click(Sender: TObject); begin
ServerSocket.Close; ClientSocket.Close; Close; end
; procedure
TChatForm.Memo1KeyDown(Sender: TObject; var
Key: Word; Shift: TShiftState); begin
if
Key = VK_Return then
if
IsServer then
ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1]) else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]); end
; procedure
TChatForm.FormCreate(Sender: TObject); begin
FileListenItemClick(nil
); end
; procedure
TChatForm.ServerSocketError(Sender: TObject; Number: Smallint; var
Description: string
; Scode: Integer; const
Source, HelpFile: string
; HelpContext: Integer; var
CancelDisplay: Wordbool); begin
ShowMessage(Description); end
; procedure
TChatForm.Disconnect1Click(Sender: TObject); begin
ClientSocket.Active := False; ServerSocket.Active := True; Statusbar1.Panels[0].Text := 'Listening...'; end
; procedure
TChatForm.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin
Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost; end
; procedure
TChatForm.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket); begin
Memo2.Lines.Add(Socket.ReceiveText); end
; procedure
TChatForm.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); begin
Memo2.Lines.Add(Socket.ReceiveText); end
; procedure
TChatForm.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); begin
IsServer := True; Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress; end
; procedure
TChatForm.ServerSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin
Memo2.Lines.Clear; end
; procedure
TChatForm.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin
FileListenItemClick(nil
); end
; procedure
TChatForm.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var
ErrorCode: Integer); begin
Memo2.Lines.Add('Error connecting to : ' + Server); ErrorCode := 0; end
; procedure
TChatForm.ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin
Statusbar1.Panels[0].Text := 'Listening...'; end
; end
.