Вниз
Скачать: CL | DM;

Массив объектов.   Найти похожие ветки 

← →
Новичек ©   (2007-08-10 13:13) [0]

Уважаемые Мастера, возникла необходимость создать динамический массив объектов. Но встала проблема: как назначить обработчик какого-либо события конкретному экземпляру массива?
Код следующий:

function Connect(Address, Frame: AnsiString; Port: Cardinal): Boolean;
var
 i: Word;
begin
 SetLength(Frames, FramesCount);
 for i := 1 to FramesCoun do
 begin
   Frames[i] := TTnCnx.Create(frmMain);
   Frames[i].Port := IntToStr(Port);  
   Frames[i].Host := Address;
   Frames[i].OnDataAvailable := frmMain.DataAvailable;//Один на всех!
   Frames[i].Connect;
 end;


← →
stanislav ©   (2007-08-10 13:31) [1]

Правильно.
frmMain.DataAvailable - только у этой процедуры должны быть параметры такие как у обработчиков например DataAvailable (Sender:TObject)


← →
Новичек ©   (2007-08-10 13:42) [2]

А как назначить каждому элементу массива свой обработчик? Возможно ли это в принципе?


← →
DVM ©   (2007-08-10 13:44) [3]


> А как назначить каждому элементу массива свой обработчик?
>  Возможно ли это в принципе?

Возможно, но зачем?


← →
stanislav ©   (2007-08-10 13:46) [4]

Новичек ©   (10.08.07 13:42) [2]
Зачем???


← →
Юрий Зотов ©   (2007-08-10 13:48) [5]

> Новичек ©   (10.08.07 13:42) [2]

Точно так же, как и общий. Никто ведь не мешает написать НЕСКОЛЬКО методов-обработчиков и назначать их как угодно.


← →
Сергей М. ©   (2007-08-10 13:53) [6]


> Новичек ©   (10.08.07 13:13)


Использование именно массива вместо специально под это "заточенного" класса TObjectList чем-то оправдано ?


← →
Новичек ©   (2007-08-10 13:54) [7]

Наверное, я не могу точно выразить свою мысль...
Дело в том, что в зависимости от адреса сокета необходимо посылать серверу свою информацию.
Скорее всего, вопрос должен стоять так: возможно ли динамическое создание обработчика? (Вот это я загнул :-))


← →
Новичек ©   (2007-08-10 13:55) [8]


> Сергей М.

Виноват, даже не вспомнил :-( Попробую, спасибо.


← →
DVM ©   (2007-08-10 13:57) [9]


> Наверное, я не могу точно выразить свою мысль...

Это точно


> Дело в том, что в зависимости от адреса сокета необходимо
> посылать серверу свою информацию.

Список удобнее, чем массив. Как из середины массива выкидывать элемент будешь?


> Скорее всего, вопрос должен стоять так: возможно ли динамическое
> создание обработчика? (Вот это я загнул :-))

Простите, кто на ком стоял?


← →
Новичек ©   (2007-08-10 13:58) [10]


> Юрий Зотов

Дело в том, что я не знаю, сколько будет объектов.


← →
Новичек ©   (2007-08-10 14:00) [11]


> Список удобнее, чем массив

Уже понял, уже исправляюсь :-)


← →
Сергей М. ©   (2007-08-10 14:01) [12]


> Новичек ©   (10.08.07 13:13)
> встала проблема


И какая же ?


← →
Сергей М. ©   (2007-08-10 14:03) [13]


> Новичек ©   (10.08.07 14:00) [11]
>
>
> > Список удобнее, чем массив
>
> Уже понял, уже исправляюсь :-)
>


Ну не надо же так оперативно и дубово реагировать на сказанное) ..

Ты уже про "удобства" справку проштудировал или как ?)


← →
Новичек ©   (2007-08-10 14:05) [14]


> Сергей М.

Сударь, я же уже решаю её с Вашей подачи.


← →
Юрий Зотов ©   (2007-08-10 14:05) [15]

> Новичек

В принципе, сделать это можно, но придется генерить либо машинный код обработчика, либо его текст (и тогда программа должна содержать еще и интерпретатор).

Обе этих задачки явно не для новичков. Гораздо проще сделать один обработчик, а в нем - ветвление кода (через case или любым другим способом).


← →
Новичек ©   (2007-08-10 14:06) [16]


> Ты уже про "удобства" справку проштудировал или как ?)

Сразу же, как только прочел про TObjectList.


← →
Новичек ©   (2007-08-10 14:08) [17]


> В принципе, сделать это можно, но придется генерить либо
> машинный код обработчика, либо его текст (и тогда программа
> должна содержать еще и интерпретатор).

Нечто подобное я и подозревал...
Спасибо, попробую через TObjectList.


← →
Сергей М. ©   (2007-08-10 14:20) [18]


> Новичек ©   (10.08.07 14:06) [16]
> Сразу же, как только прочел про TObjectList.


Ну что сказать ?

Только разве что "ришпект и уважуха")


← →
Новичек ©   (2007-08-10 14:25) [19]

Спасибо большое, очень помогли. Получилось :-)


← →
stanislav ©   (2007-08-10 16:45) [20]

Новичек ©   (10.08.07 14:25) [19]
А что получилось?
Тебе ненадо кучу обработчиков тебе надо в 1 обработчике прописать условия:

if TTnCnx(Sender).Adres = ..... then ....

И так далее...



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

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.018 c
8-1164713466
Tar I
2006-11-28 14:31
2007.09.02
Вывод графики поверх видео


4-1173440828
dzuev
2007-03-09 14:47
2007.09.02
usb - порт и принтер


2-1186488500
Roun
2007-08-07 16:08
2007.09.02
Как удалить пустые строки из Memo?


2-1186485158
Надежда
2007-08-07 15:12
2007.09.02
Проверка не запущена ли уже эта программа


2-1186731423
Первоклашка
2007-08-10 11:37
2007.09.02
работа с видео




   Наверх