Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические потоки 
:(
    Опции темы
appleVin
  Дата 26.3.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 26.3.2007

Репутация: нет
Всего: нет



Доброго времени суток! Подскажите плиз новичку, как динамически создавать потоки  в Delphi? smile 
PM MAIL   Вверх
ama_kid
Дата 26.3.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



посмотри здесь мой последний пост - я там прикреплял программулину, разбирайся....


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Snowy
Дата 26.3.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



1. А что, их можно создавать не динамически?
2. Под потоками подразумеваются треды или стримы? (и кто только придумал называть треды потоками?)
3. Перенесено в Delphi.
PM MAIL   Вверх
appleVin
Дата 26.3.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 26.3.2007

Репутация: нет
Всего: нет



Спасибо, сейчас гляну!  smile

Добавлено через 13 минут и 34 секунды
Цитата

 Под потоками подразумеваются треды или стримы?


 Под потоками подразумеваются треды.  smile 
PM MAIL   Вверх
Alexeis
Дата 27.3.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459





--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
appleVin
Дата 27.3.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 26.3.2007

Репутация: нет
Всего: нет



Опишу задачу поподробней:
Есть панель с кнопками, создающимися динамически,
какдая кнопка должна запускать форму из Dll, (не модально), т.е. сколько кнопок - столько и форм из Dll-ок можно запустить...
Т.к. кнопки динамические - то OnClick один:
Код
procedure TMainF.BtnClick(Sender:TObject);
.......
....
lib_name:=f.ReadString(List.Strings[(SenderasTBitBtn).Tag],'lib','');
//глобальная премем. имя библиотеки (Dll)
lib_proc:=f.ReadString(List.Strings[(SenderasTBitBtn).Tag],'startpoint',''); //глобальная ,процедура вызова формы из Dll
hh[(SenderasTBitBtn).Tag]:=loadLibrary(pChar(lib_name));
Thread_num:=(Sender as TBitBtn).Tag;
//определяю номер потока
Z_ST[(SenderasTBitBtn).Tag]:=TZthread.Create(false);
//создаю поток с номером...
......
end;

да, вещё вот такой кусочек :
Код
type
  TZThread = class (TThread)
  protected
  procedure Execute; override;
end;

Массивы:
 
Код
Z_ST: array of TZThread;
       hh: array of THandle;

И обработчик Execute:
Код

procedure TZThread.Execute;
var MyHandl:THandle;
    Go:procedure(DbName,UserName,Pasword:string);
begin
  self.FreeOnTerminate:=true;
  MyHandl:= FindWindow(Nil, '.....');
  if MyHandl<>0 then SetForegroundWindow(MyHandl) else begin
     if hh[Thread_num]<>0 then begin      @GO:=GetProcAddress(hh[Thread_num],pChar(lib_proc));
       GO(DN,UN,PS);
     end else messagebox(Application.Handle,'Отсутствует модуль dll!','Ошибка.',MB_OK+MB_ICONERROR);
.............
  end;
end;

В результате получается вот такоя картина:
если я к примеру открою 3 формы(по 1й из 3х Dll), то, закрывая последнюю, все ок, но закрывая  две  предыдущие - они закрываются и компилятор говорит - "Invalid pointer operation".(((
Получается когда закрывается форма - управление должно передаваться в процеддуру Execute, где-то вот сюда:
Код
GO(DN,UN,PS);

и там должно быть что-то вроде 
Код
Z_ST[...]:=Nil;
и
FreeLibrary(hh[...]);

Но не идет тута ни чего, когда закрываб те 2 не последние формы ((((.
Как быть и что делать, где я не прав???
Подскажите плиз, я оч запутался!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.