Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1185987836
THandle
2007-08-01 21:03
2007.09.02
Visual Basic


3-1178536064
Xmen
2007-05-07 15:07
2007.09.02
Пополнения автоинкрементного поля


3-1178662208
Мурзилка
2007-05-09 02:10
2007.09.02
отображение валюты в QuantumGrid


15-1186484853
ooserg
2007-08-07 15:07
2007.09.02
перехват сообщений


1-1182408497
Kolan
2007-06-21 10:48
2007.09.02
Не омгу подключить пакет, ругется что already on the search path





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский