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

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

exit и procedure


Res ©   (2008-06-20 21:49:00) 

Здравствуйте..
имеется процедура test

procedure test;
begin
....
if(...) then exit;
...
end;

При запуске данной процедуры в потоке, почему то торзмозит весь поток, т.е. код дальше не выполняется после этой процедуры


Сергей М.   (2008-06-21 22:28:00) [1]


>  прога все больше и больше жрет памяти


Не мудрено, что "жрет".

Ты ж сам ее и "скармливаешь" всякий раз, когда вызываешь EndThread)


Loginov Dmitry   (2008-06-21 09:00:00) [2]

> command:=param;
> sss:=command^;
> freemem(param,SizeOf(string));


это что? Объясни, что хотел сделать.


Тын-Дын   (2008-06-20 23:33:00) [3]

Удалено модератором


Игорь Шевченко   (2008-06-20 23:30:00) [4]

Res   (20.06.08 23:24) [9]

слова "test", "exit" потерялись при копировании.


Тын-Дын   (2008-06-20 23:30:00) [5]

Удалено модератором
Примечание: Достал. Читай правила


Тын-Дын   (2008-06-20 23:29:00) [6]


> rst:=test(saccount,sproxy,sss);

Что процедура-то делает? Из твоего кода мало что понятно.


Res   (2008-06-20 23:24:00) [7]

Еще проблема в том, что прога все больше и больше жрет памяти...

>
>
> Покажи код потока. Без этого не имеет смысла обсуждать что-
> то.
>
> PS. Не обращай внимания на детские комментарии. Здесь и
> такие ходят.

Запускаю поток:
     BeginThread(nil,0,Addr(thread),Addr(ggg),0,id);
Сам поток:

procedure thread(param:pointer);
var
command:^string;
sss:string;
sproxy,saccount:string;
x,y:integer;
rst:integer;
label
lproxy,laccount;
begin
command:=param;
sss:=command^;
freemem(param,SizeOf(string));
if(sss='') then EndThread(0);
 laccount:
 saccount:='';
 EnterCriticalSection(form1.cs);
   saccount:=getaccount;
 LeaveCriticalSection(form1.cs);
 //sleep(1115000);
 if(saccount='') then EndThread(0);
 lproxy:
 sproxy:='';
 EnterCriticalSection(form1.cs);
   sproxy:=getproxy;
 LeaveCriticalSection(form1.cs);
 if(sproxy='') then EndThread(0);
 //messagebox(0,PAnsiChar(sproxy),'',0);
   rst:=test(saccount,sproxy,sss);
  // messagebox(0,PAnsiChar(saccount),'',0);
   if(rst=0) then
   begin
     EnterCriticalSection(form1.cs);
       x:=0;
       while(x<=form1.account.Count-1) do
       begin
         if(form1.account.Strings[x]=saccount) then
         begin
           form1.account.Delete(x);
           x:=x-1;
         end;
         x:=x+1;
       end;
     LeaveCriticalSection(form1.cs);
     goto laccount;
   end
   else if(rst=1) then
   begin
     EnterCriticalSection(form1.cs);
       x:=0;
       while(x<=form1.proxy.Count-1) do
       begin
         if(form1.proxy.Strings[x]=sproxy) then
         begin
           form1.proxy.Delete(x);
           x:=x-1;
         end;
         x:=x+1;
       end;
     LeaveCriticalSection(form1.cs);
    goto lproxy;
   end;    
...
EndThread(0);
end;


Тын-Дын   (2008-06-20 23:23:00) [8]

Удалено модератором


Игорь Шевченко   (2008-06-20 23:20:00) [9]

Удалено модератором


Тын-Дын   (2008-06-20 23:19:00) [10]

Удалено модератором


Palladin   (2008-06-20 22:57:00) [11]


>Сергей М. ©   (20.06.08 22:49) [4]

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


Сергей М.   (2008-06-20 22:49:00) [12]

Ладно хоть не угроза..


> Res   (20.06.08 21:49) 
</I

> При запуске данной процедуры в потоке


Это еще надо умудриться - запустить процедуру нев потоке..


McSimm   (2008-06-20 22:23:00) [13]

Наверное это было предупреждение, не вопрос.


Сергей М.   (2008-06-20 22:11:00) [14]


> торзмозит .., т.е. .. не выполняется


Прелюбопытные синонимы)


Игорь Шевченко   (2008-06-20 21:50:00) [15]

не компилируется


Наверх

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