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 все работало замечательно.
Как лечить?


sniknik   (2004-10-29 11:21:00) [121]

> как это понимать?
ты не то показываеш, хочеш чтобы по 18й строке нашли глюк в 17й. а то что показываеш нельзя назвать кодом, это один сплошной глюк, не скомпилится.
либо здесь урезано так что принимает другой вид.


Digitman   (2004-10-29 11:20:00) [122]


> делфа у меня (5 и 7) кривые - компилят кривой код


дурью маешься, да ?
при чем здесь версия Делфи ? ты прявила Паскаля нарушил !

procedure TMythread.execute;
begin
     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;
end;

то что подчеркнуто, это к чему относится ?
тело процедуры Execute - это то что между begin..end у тебя, а следом что за галиматься идет, скажи на милость ?


Reindeer Moss Eater   (2004-10-29 11:18:00) [123]

Иногда и медицина бессильна


dms_main   (2004-10-29 11:17:00) [124]

Воощем тут все ясно ......
все ушли от темы - помочь в итоге никто не в состоянии .....


Reindeer Moss Eater   (2004-10-29 11:15:00) [125]

Слева направо


dms_main   (2004-10-29 11:12:00) [126]


> Потому что там работает другой код

как это понимать?


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

почему тогда это код в апликухе работает?

Потому что там работает другой код


dms_main   (2004-10-29 11:11:00) [128]


> это даже скомпилировано быть не может

делфа у меня (5 и 7) кривые - компилят кривой код.... :-)))


dms_main   (2004-10-29 11:10:00) [129]


> Вставил не первой строкой, либо конструктор не вызван.
>
> Аналогичный код в конструктор.

работает

> Либо процесс вообще не имет прав на томе на создание файлов

почему тогда это код в апликухе работает?
Апликуха которая грузит dll имеет права на создание файлов....


Reindeer Moss Eater   (2004-10-29 11:09:00) [130]

не расстраивайся, все просто, учись отвечать. ;о)

Я и других еще научу.


Digitman   (2004-10-29 11:08:00) [131]

это даже скомпилировано быть не может
какой уж разговор о куче несуразностей собственно в алгоритме ..


sniknik   (2004-10-29 11:08:00) [132]

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

2 dms_main
у тебя ошибка в 17-й (семнадцатой) строке! че ты сюда 18-е (восемнадцатые) лепиш?

> я туда messagebox и MessageBeep($FFFFFFFF) вставлял пофиг...
VCL-ные или системные?

а секция действительно бред. что с чем синхронизируется, если оно все в одном блоке.


Reindeer Moss Eater   (2004-10-29 11:07:00) [133]

Либо процесс вообще не имет прав на томе на создание файлов


Reindeer Moss Eater   (2004-10-29 11:06:00) [134]

Вставил не первой строкой, либо конструктор не вызван.

Аналогичный код в конструктор.


dms_main   (2004-10-29 11:04:00) [135]

1:

> А что бы убедиться, что Execute все же вызывается, вставь
> первой строкой в него:
>
> with TFileStream.Create(Format('%d-log.txt',[GetCurrentThreadID]),fmCreate)
> do
> try
>  WriteBuffer('А все таки она вертиться',24);
> finally
>   Free;
> end;

нифига непишется
2:
в taskmanager есчетчик трэдов - их там в проге нужное кол-во
так execute и не вызвался......  :-((


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

Все твои критические секции только пожирают ресурсы и никого нахрен не синхронизируют.
Они - бред сивой кобылы.

А про вызов Execute читай в 24 посте.


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

млин ща весь выложу...

Уже не надо.


dms_main   (2004-10-29 10:55:00) [138]


TMyThread = class(TTHread)
 drive:char;
 list:textfile;
 checkList,sum:TStringList;
 mysection:TcriticalSection;
 mycountsection:TcriticalSection;
 constructor create(adrive:char);
 destructor free;
 procedure execute;override;
 procedure FindFile(path:string);
 procedure parseFile(name:string);

end;
constructor tmythread.create(adrive:char);
var
p:pointer;
begin
   inherited create(false);
   assignfile(list,adrive+'.txt');
   rewrite(list);
   drive:=adrive;
   FreeOnTerminate:=true;
   Priority:=tpNormal;
   mycountsection:=TcriticalSection.Create;
   mycountsection.Enter;
   try
   threadcount:=threadcount+1;
   finally
   end;
   mycountsection.Leave;
   mycountsection.Free;

end;

destructor tmythread.free;
begin
   inherited free;
end;

procedure TMythread.execute;
begin
      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;
end;


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

это для тебя бред

Это бред не только для меня.

а execute нет....

Читай [24] и не свисти MessageBeep'ом


dms_main   (2004-10-29 10:53:00) [140]

млин ща весь выложу...


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

Наверх

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