Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
Вниз
Массив объектов. Найти похожие ветки
← →
Новичек © (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.065 c