Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

назначение обработчика внутри класса   Найти похожие ветки 

 
Ken   (2004-11-25 12:03) [0]

Уважаемые мастера, хочу всунуть в свой класс Сокет и описать все обработчики внутри класса! При етом необходимо, чтоб сокет снаружы класса вообще не был виден!

Пишу:

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

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Edit1: TEdit;
   Button4: TButton;
   procedure Button4Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

type TMyClass = class
     private
     pOnConnect : procedure;
     ti : integer;
     MySocket : TClientSocket;

     public
     constructor Create;
     destructor Destroy;

end;

var
 Form1: TForm1;
 MyClass : TMyClass;

implementation

{$R *.dfm}

constructor TMyClass.Create;
begin
MySocket := TClientSocket.Create(nil);
MySocket.Host:="127.0.0.1";
MySocket.Port:=1234;
MySocket.OnConnect := pOnConnect;
inherited Create;
end;

destructor TMyClass.Destroy;
begin
MySocket.Close;
inherited Destroy;
end;


Компилятор ругаеться на MySocket.OnConnect := pOnConnect; Ошибка: Несовместим указатель метода и процедура

Вопрос такой:
Как грамотно ето обьявить и в какой части кода описать ету процедуру, чтоб вне класса она вообще небыла видна?


 
TUser ©   (2004-11-25 12:11) [1]

procedure of object


 
Ken   (2004-11-25 12:13) [2]


> TUser

теперь ругаеться на Parametr list differ! Та же самая строка


 
TUser ©   (2004-11-25 12:15) [3]

OnEvent: TNotifyEvent;

TNotifyEvent = procedure (Sender: TObject) of object;


 
Ken   (2004-11-25 12:15) [4]

Вписал pOnConnect : procedure(Sender: TObject;
     Socket: TCustomWinSocket) of object; и заработало.


 
Digitman ©   (2004-11-25 12:16) [5]

TMyClass = class
  private
    procedure DoConnect(Sender: TObject; Socket: TCustomWinSocket);
...
    MySocket : TClientSocket;

  public
    constructor Create;
    destructor Destroy; override;
end;

constructor TMyClass.Create;
begin
// inherited Create; //необязательно для прямого наследника TObject
MySocket := TClientSocket.Create(nil);
MySocket.Host:="127.0.0.1";
MySocket.Port:=1234;
MySocket.OnConnect := DoConnect;
end;


 
Digitman ©   (2004-11-25 12:19) [6]


> Ken   (25.11.04 12:15) [4]
> Вписал pOnConnect : procedure(Sender: TObject;
>      Socket: TCustomWinSocket) of object; и заработало.


не заработало, а компиляция безошибочно прошла
а работать это не будет, потому что у тебя это лишь указатель на метод, но не собственно метод, который еще декларировать и реализовать нужно


 
Ken   (2004-11-25 12:25) [7]


> Digitman

Понял. переписал и заработало уже как надо! Спасибо.

У меня еще такой вопрос:
Как получить 4 байта, содержащие мой ip?


 
Ken   (2004-11-25 12:37) [8]

Мастера, подскажите пожалуйста, как получить 4 байта, содержащие мой ip адресс?


 
Digitman ©   (2004-11-25 12:49) [9]

строковое представление этого адреса ты можешь получить вызовом MySocket.Socket.LocalAddress

далее, чтобы получить те самые "4 байта" из этого стр.представления, чеши макушку сам ... не так уж и сложно ...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.058 c
4-1099071933
cerber1
2004-10-29 21:45
2004.12.12
Работает ли мышь? Как поределить програмно?


9-1091933799
MonoLife
2004-08-08 06:56
2004.12.12
Не много о Sprite, подскажите.


14-1101183994
VMcL
2004-11-23 07:26
2004.12.12
Tech. support


1-1101799104
Progh
2004-11-30 10:18
2004.12.12
Сохранения TListView в виде HTML


14-1101314862
Defunct
2004-11-24 19:47
2004.12.12
Янукович побел на выборах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский