Головна сторінка
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.57 MB
Час: 0.087 c
3-1100590139
dron-s
2004-11-16 10:28
2004.12.12
За рядкове виділення в таблиці


14-1100967410
redlord
2004-11-20 19:16
2004.12.12
delfi7 і сокети


1-1101287480
в середині
2004-11-24 12:11
2004.12.12
Access violation


3-1100382640
kirilllius
2004-11-14 00:50
2004.12.12
Розмір Access і JPEG


14-1101018661
Геро
2004-11-21 09:31
2004.12.12
про пам'ять





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