Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 12:01   #1
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию поток в компоненте

Привет Всем!

В общем это и не проблема, просто не могу организовать правильно то, что хочу сделать.

Смысл: в компоненте плейлиста хочу сделать обработку файлов через поток. сабклассил поток. вот тут начинается гемор.

Код:
...
private
  ...
  fThread: TZMSThread;
  ...
в такой трактовке я не могу получить доступ к private переменным в компоненте, т.к. все обработка выполняется в fThread.execute процедуре.

даже если делать через public св-ва компонента я также не могу получить к ним доступ, т.к. self = fthread

надеюсь понятно написано, есть какие нить решения?
или я что-то не правильно делаю?
ZuBy вне форума Ответить с цитированием
Старый 24.08.2010, 12:40   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

1. организация взаимных ссылок в объектах
Код:
type
Tclass1 =class;

Tclass2=class
private
  cls1: TClass1;
end;

Tclass1=class
private
  cls2: TClass2;
end;
2. организация работы с Event(работа с процедурными типами)

Код:
type
TEventList=procedure(oar: integer) of oject;

 Tclass1 =class
private
  procedure evntlist(par: integer);//cписок параметров должен соответствовать списку у TeventList
end;

Tclass2=class
 private
  FGetList: TEventList;
end;
Код:
var
cl2: Tclass2;
cl1: Tclass1;

cl2.Fgetlist:=cl1.evntlist;//установка связи

cls.Fgetlist(3); //использование связи
//вызов метода evntlist объекта cl1 (типа Tclass1) внутри объекта cl2
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.08.2010 в 12:54.
evg_m вне форума Ответить с цитированием
Старый 24.08.2010, 12:54   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

evg_m, что-то подобное я делал.
только нужного эффекта так и не добился, есть еще идеи?

2-ой способ стоит попробовать

Последний раз редактировалось ZuBy; 24.08.2010 в 13:01.
ZuBy вне форума Ответить с цитированием
Старый 24.08.2010, 16:57   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

получить доступ к private переменным в компоненте

Private по определению доступны только в том модуле (unit) гда определен данный класс.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 24.08.2010, 17:27   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
даже если делать через public св-ва компонента я также не могу получить к ним доступ, т.к. self = fthread
А объявить в потомке TThread свойство класса компонента, к которому в дальнейшем (в Execute) потребуется доступ ?

Обычно подобные проблемы решаются именно так.

Код:
type
class TMyComponent;

class 
    TMyThread = TThread
    private
        _MyComponent: TMyComponent;
    protected
        procedure Execute;
    public
        constructor Create(MyComponent: TMyComponnet);
    end;

implementation

constructor TMyThread.Create(MyComponent: TMyComponent)
begin
   inherited TThread.Create;
   _MyComponent := MyComponent;
end;

procedure TMyThread.Execute
begin
   while (true) do
   begin
       // get access to _MyComponent
   end;
end;
за синтаксис не отвечаю давно уже на дельфи с головы не писал ))

Последний раз редактировалось BOBAH13; 24.08.2010 в 17:32.
BOBAH13 вне форума Ответить с цитированием
Старый 24.08.2010, 18:02   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

всем спасибо, я решил самостоятельно.
если кому интересно есть потоковый таймер с его помощью реализовал нужное мне действие.

ТЕМА ЗАКРЫТА!
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoSize в компоненте AdvPanel1 Polotenchik Компоненты Delphi 0 10.04.2010 17:24
ошибка в компоненте DeDoK Общие вопросы Delphi 2 22.09.2009 01:39
Ошибка впользовательском компоненте Demosx Общие вопросы .NET 0 02.07.2008 13:52
Вопрос о компоненте ShellListViev Bill Gates Общие вопросы Delphi 2 28.11.2007 22:35
Canvas в компоненте ListBox Миша Общие вопросы Delphi 3 24.09.2007 20:38