Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив объектов. [D7, XP]


Новичек ©   (2007-08-10 13:13:00) 

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

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 16:45:00) [1]

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

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

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


Новичек   (2007-08-10 14:25:00) [2]

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


Сергей М.   (2007-08-10 14:20:00) [3]


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


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

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


Новичек   (2007-08-10 14:08:00) [4]


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

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


Новичек   (2007-08-10 14:06:00) [5]


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

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


Юрий Зотов   (2007-08-10 14:05:00) [6]

> Новичек

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

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


Новичек   (2007-08-10 14:05:00) [7]


> Сергей М.

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


Сергей М.   (2007-08-10 14:03:00) [8]


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


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

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


Сергей М.   (2007-08-10 14:01:00) [9]


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


И какая же ?


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


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

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


Новичек   (2007-08-10 13:58:00) [11]


> Юрий Зотов

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


DVM   (2007-08-10 13:57:00) [12]


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

Это точно


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

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


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

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


Новичек   (2007-08-10 13:55:00) [13]


> Сергей М.

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


Новичек   (2007-08-10 13:54:00) [14]

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


Сергей М.   (2007-08-10 13:53:00) [15]


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


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


Юрий Зотов   (2007-08-10 13:48:00) [16]

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

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


stanislav   (2007-08-10 13:46:00) [17]

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


DVM   (2007-08-10 13:44:00) [18]


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

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


Новичек   (2007-08-10 13:42:00) [19]

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


stanislav   (2007-08-10 13:31:00) [20]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо