Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Dll и TThread [D5, D7, WinXP]


Страницы:   1 2 3 4 5 6 7 8 9

dms_main ©   (2004-10-29 10:02:00) 

Уважаемые мастера, обнаружил такой глюк.
Есть класс на основе стандартного Tthread,
креатится так:

constructor tmythread.create;
begin
   inherited create(false);
end;

Проблема в том , что в dll невызывается execute, хотя в console Application все работало замечательно.
Как лечить?


dms_main   (2004-10-29 10:52:00) [141]


> В общем так.
> Твоя критическая секция - полный бред.

это для тебя бред
я туда messagebox и MessageBeep($FFFFFFFF) вставлял пофиг...
дело не в том бред или нет -  там все проверено....
дело в том что метод create вызывается, а execute нет....
вот где загвоздка....


Reindeer Moss Eater   (2004-10-29 10:50:00) [142]

Обсуждается какой-то мифический несуществующий код.
На кофейной гуще и то эффективнее гадать получается.


Reindeer Moss Eater   (2004-10-29 10:49:00) [143]

constructor tmythread.create(drive:char);
begin
 inherited create(false);
end;

было б в нем дело......


И где сохранение параметра в классе?


Reindeer Moss Eater   (2004-10-29 10:47:00) [144]

В общем так.
Твоя критическая секция - полный бред.

А что бы убедиться, что Execute все же вызывается, вставь первой строкой в него:

with TFileStream.Create(Format('%d-log.txt',[GetCurrentThreadID]),fmCreate) do
try
 WriteBuffer('А все таки она вертиться',24);
finally
  Free;
end;


dms_main   (2004-10-29 10:43:00) [145]


> Да пофик чар она или стринг!
> Переменная это или член класса потока?!

член класса потока - естественно...


Reindeer Moss Eater   (2004-10-29 10:42:00) [146]

Drive : char - смотри след. пост

Да пофик чар она или стринг!
Переменнаяэто или член классапотока?!


dms_main   (2004-10-29 10:40:00) [147]


> Что такое Drive? Поле класса или переменная модуля?

Drive : char - смотри след. пост

> И нафик тогда там критическая секция которая создается при
> входе и уничтожается при выходе?
> Кого она синхронизирует?

пременная threadcount:integer - счетчик трэдов...
и вообще мы от темы ушли - дело не в том что выскакивает ошибка - дело в том что execute метод не вызывается вообще.....


Reindeer Moss Eater   (2004-10-29 10:37:00) [148]

Это что? код Execute?

И нафик тогда там критическая секция которая создается при входе и уничтожается при выходе?
Кого она синхронизирует?

Что такое Drive? Поле класса или переменная модуля?

В общем бред какой-то.

И где все же передается имя файла?


dms_main   (2004-10-29 10:34:00) [149]


constructor tmythread.create(drive:char);
begin
  inherited create(false);
end;


было б в нем дело......


dms_main   (2004-10-29 10:33:00) [150]


var
List:textfile;
       assignfile(list,drive+'.txt');
       rewrite(list);
       FindFile(drive+':\round.txt');
       closefile(list);
       checkList:=TStringList.Create;
       checklist.Duplicates:=dupIgnore;
       checklist.Sorted:=true;
       checkList.LoadFromFile(drive+'.txt');
       checklist.SaveToFile(drive+'.txt');
       checklist.Clear;
       parseFile(drive+'.txt');
  end;
   mycountsection:=TcriticalSection.Create;
   mycountsection.Enter;
   try
   threadcount:=threadcount-1;
   finally
   mycountsection.Leave;
   mycountsection.Free;
   end;


Reindeer Moss Eater   (2004-10-29 10:30:00) [151]

имя файла предается трэду через параметр в креате.

Что-то я не вижу, что передается.
Читая твой первый постинг.


Reindeer Moss Eater   (2004-10-29 10:29:00) [152]

Код давай уже, да?


dms_main   (2004-10-29 10:28:00) [153]

имя файла предается трэду через параметр в креате.
в каждом трэде - уникальное


Reindeer Moss Eater   (2004-10-29 10:26:00) [154]

хотя в console Application все работало замечательно.

Глобальные переменные тому виной.
Как пить дать.
Имя файла например.


Reindeer Moss Eater   (2004-10-29 10:25:00) [155]

Итог файл создан но незаполнен.

Создается один файл, а execute пишет в другой.


Reindeer Moss Eater   (2004-10-29 10:24:00) [156]

код Execute показывай


dms_main   (2004-10-29 10:23:00) [157]

ну насчет дебага : при креате создается файл (свой для каждого трэда),при execute он заполняется. Итог файл создан но незаполнен.


Reindeer Moss Eater   (2004-10-29 10:21:00) [158]

Либо все таки не вызван конструктор.
Код вызова констсруктора написан, но он не вызывается.


Reindeer Moss Eater   (2004-10-29 10:20:00) [159]

Оптимизация или неправильный "дебаг"


dms_main   (2004-10-29 10:18:00) [160]

дебагом


Страницы:   1 2 3 4 5 6 7 8 9

Наверх

Титульная страница Поиск, карта сайта Написать письмо