Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: 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 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
1-1182360861
JanMihail
2007-06-20 21:34
2007.09.02
Как зарегить 5-ти значный ICQ


2-1186593827
Sonia
2007-08-08 21:23
2007.09.02
Проблема с настройками клиента Oracle (а может еще чего-то)


2-1186745000
AlRal
2007-08-10 15:23
2007.09.02
TListBox


15-1186308541
vrem
2007-08-05 14:09
2007.09.02
Стандартизация и программисты :)


8-1164093104
DVM
2006-11-21 10:11
2007.09.02
Наиболее быстро изменить размер Bitmap-а (уменьшить).