![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив объектов. [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)