Головна сторінка
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]

процедура 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;
починати
// 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.58 MB
Час: 0.052 c
14-1101311752
Shadow-st
2004-11-24 18:55
2004.12.12
мовна панель


1-1101842302
Точка
2004-11-30 22:18
2004.12.12
знову ресурси


14-1101177219
Думкіна
2004-11-23 05:33
2004.12.12
З Днем народження! 23 листопада


1-1101746383
Df
2004-11-29 19:39
2004.12.12
if, then, else on RichEdit


9-1090249442
breakmaster
2004-07-19 19:04
2004.12.12
Megamaze





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська