Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Внизexit и procedure Найти похожие ветки
← →
Res (2008-06-20 21:49) [0]Здравствуйте..
имеется процедура test
procedure test;
begin
....
if(...) then exit;
...
end;
При запуске данной процедуры в потоке, почему то торзмозит весь поток, т.е. код дальше не выполняется после этой процедуры
← →
Игорь Шевченко © (2008-06-20 21:50) [1]не компилируется
← →
Сергей М. © (2008-06-20 22:11) [2]
> торзмозит .., т.е. .. не выполняется
Прелюбопытные синонимы)
← →
McSimm © (2008-06-20 22:23) [3]Наверное это было предупреждение, не вопрос.
← →
Сергей М. © (2008-06-20 22:49) [4]Ладно хоть не угроза..
> Res (20.06.08 21:49)
</I
> При запуске данной процедуры в потоке
Это еще надо умудриться - запустить процедуру не в потоке..
← →
Palladin © (2008-06-20 22:57) [5]
>Сергей М. © (20.06.08 22:49) [4]
не принимай аффтара слишком близко к сердцу... он месяца три назад строки разбирать начал... теперь у младенца в руках перфоратор в виде потоков... он ими теперь строки разбирает... на каждую строчку - поток
← →
Тын-Дын © (2008-06-20 23:19) [6]Удалено модератором
← →
Игорь Шевченко © (2008-06-20 23:20) [7]Удалено модератором
← →
Тын-Дын © (2008-06-20 23:23) [8]Удалено модератором
← →
Res (2008-06-20 23:24) [9]Еще проблема в том, что прога все больше и больше жрет памяти...
>
>
> Покажи код потока. Без этого не имеет смысла обсуждать что-
> то.
>
> 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:29) [10]
> rst:=test(saccount,sproxy,sss);
Что процедура-то делает? Из твоего кода мало что понятно.
← →
Игорь Шевченко © (2008-06-20 23:30) [11]Res (20.06.08 23:24) [9]
слова "test", "exit" потерялись при копировании.
← →
Тын-Дын © (2008-06-20 23:30) [12]Удалено модератором
Примечание: Достал. Читай правила
← →
Тын-Дын © (2008-06-20 23:33) [13]Удалено модератором
← →
Loginov Dmitry © (2008-06-21 09:00) [14]> command:=param;
> sss:=command^;
> freemem(param,SizeOf(string));
это что? Объясни, что хотел сделать.
← →
Сергей М. © (2008-06-21 22:28) [15]
> прога все больше и больше жрет памяти
Не мудрено, что "жрет".
Ты ж сам ее и "скармливаешь" всякий раз, когда вызываешь EndThread)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.072 c