Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Как остановить процедуру   Найти похожие ветки 

 
Кириешки ©   (2004-08-12 08:56) [0]

Процедура выполняестся постоянно, тоесть в ее конце стоит указатель на начало её же самой по новой. Она выполняется до появляний некоторых условий. А если условий нету и мне надо ее остановить, то как это сделать из другой процедуры? То есть как одну циклическую процедуру остановить из другой процедуры?


 
Skyle ©   (2004-08-12 09:03) [1]

Если в процедуре нет блоков Try..except..end на рекурсии, то можно в процедуре сделать Raise и стек будет раскручен до ближайщего блока.
Соответственно первый вызов нужно обернуть, чтобы не выскочить фиг знает куда.


 
KADAN ©   (2004-08-12 09:03) [2]

в другой процедуре присвоить какой-либо переменной true и проверять это в первой.


 
Думкин ©   (2004-08-12 09:05) [3]

> [1] Skyle ©   (12.08.04 09:03)

Не... у него
while a do ;
что-то такое.
А как другая процедура получает время на выполнение?


 
Alx2 ©   (2004-08-12 09:08) [4]

В отдельном потоке выполнять эту процедуру


 
KSergey ©   (2004-08-12 09:09) [5]

> [3] Думкин ©   (12.08.04 09:05)
> Не... у него
> while a do ;
> что-то такое.

Судя по вопросу - да
Но утверждать это однозначно - я бы не стал ;)


 
Skyle ©   (2004-08-12 09:14) [6]


> [3] Думкин ©   (12.08.04 09:05)

Ну даже если и так. Почему не катит-то?


 
KSergey ©   (2004-08-12 09:16) [7]

> [6] Skyle ©   (12.08.04 09:14)

См. последюю строчку из [3]


 
Думкин ©   (2004-08-12 09:16) [8]

> [6] Skyle ©   (12.08.04 09:14)

Я не про катит, а про то, что это не

procedure a;
begin
    ......
    a
end;


А в остальном - автора надо ждать.


 
Anatoly Podgoretsky ©   (2004-08-12 09:17) [9]

Кириешки ©   (12.08.04 08:56)  
Никак выход ограничивается рамками процедуры.


 
Vlad Oshin ©   (2004-08-12 09:27) [10]


> KADAN ©   (12.08.04 09:03) [2]
> в другой процедуре присвоить какой-либо переменной true
> и проверять это в первой.

всегда так делаю


 
REA ©   (2004-08-12 09:31) [11]

Если она уже выполняется, то остановить (повлиять на ее работу) ее можно только из другого потока, либо временно отдавая управление OS.


 
Кириешки ©   (2004-08-12 09:38) [12]

Цикличная процедура проверяет не пытается ли создаться окно мне неприятное - если пытается, то засовываем в него нужные данные и координаты рисования и прерываем процедуру. Так как мне ее прервать "извне", то-то типа abort procedure


 
REA ©   (2004-08-12 09:50) [13]

>не пытается ли создаться окно мне неприятное

А откуда оно возьмется "такое некрасивое", если работает процедура?


 
ALS ©   (2004-08-12 09:53) [14]

>то-то типа abort procedure
Exit?


 
Кириешки ©   (2004-08-12 09:58) [15]

REA ©   (12.08.04 09:50) [13]

Окно которое хочет создаться - не мое. Это окно... Его даже окном не назвать, так, окошко...
Это программа одного чувака, который ее в нашем компьютерном клубе повесил. Она блокирует программу админа на запрет доступа к компу пользователей не оплативших время. Если вырубить программу
этого чувака - комп сразу вырубается. Так вот я и делаю ее "безвредной" и координаты ее рисования : - 2000,-2000.


 
Гаврила ©   (2004-08-12 09:58) [16]

Заменить на boolean-функцию, или добавить  с вар-параметр

Если пора выходить - присваиваем False и по цепочке рекурсии выходим  отовсюду
То есть вначале проверяем флаг ,если false - выходим сразу
таким обрназом стек будет раскручен до момента первого входа

Поднимать исключения в данном случае не совсем правильно имхо
из пушки по воробьям


 
Anatoly Podgoretsky ©   (2004-08-12 10:00) [17]

Кириешки ©   (12.08.04 09:58) [15]
Чувака на растрел.


 
Кириешки ©   (2004-08-12 10:01) [18]

ALS ©   (12.08.04 09:53) [14]
Гаврила ©   (12.08.04 09:58) [16]

НЕТ,  она у меня была функцией, но условий на выход возникало слишком дофига - поэтому она процедура теперь. А Exit тут вообще не в тему. Как вызвать Exit из другой процедуры.


 
Кириешки ©   (2004-08-12 10:03) [19]

Anatoly Podgoretsky ©   (12.08.04 10:00) [17]

Дык я же его не знаю.
Он сначала трояна пускал чтобы узнать админовский пароль, а теперь вот эту шнягу придумал. :(((
Я с этим **** бороться уже устал.


 
REA ©   (2004-08-12 10:11) [20]

>она у меня была функцией, но условий на выход возникало слишком дофига - поэтому она процедура теперь

О как


 
Гаврила ©   (2004-08-12 10:15) [21]


> Как вызвать Exit из другой процедуры.


Abort
выход из всех процедур, или до ближайшей секции except


 
Skyle ©   (2004-08-12 10:16) [22]


>  [21] Гаврила ©   (12.08.04 10:15)

Тот же Raise...


 
Гаврила ©   (2004-08-12 10:17) [23]


> Skyle ©   (12.08.04 10:16) [22]


Ну раз уж по другому не получается ,придется так ...


 
Рамиль ©   (2004-08-12 10:20) [24]


> Если вырубить программу
> этого чувака - комп сразу вырубается.

Даже если TerminateProcess?


 
Кириешки ©   (2004-08-12 10:23) [25]

REA ©   (12.08.04 10:11) [20]

Именно так. Процедура не возращает ничего, а функция возвращает!!
Вот именно поэтому я переделал ее в процедуру.


 
KSergey ©   (2004-08-12 10:25) [26]

> [15] Кириешки ©   (12.08.04 09:58)

1.У вас админы чем занимаются, если любой "чувак" может повесить чо хочет??
2.А переставить винду - не проще, есил уж найти это прогу не удается? (ох, что-то плохо вы ее ищете, мест вообще-то не так много по идее, хотя, возможно, я что-то и не знаю...)


 
KSergey ©   (2004-08-12 10:26) [27]

А вообще - детский сад в песочнице... Прямо казаки-разбойники :(


 
REA ©   (2004-08-12 10:27) [28]

>Процедура не возращает ничего, а функция возвращает!!
>Вот именно поэтому я переделал ее в процедуру.

Ну что ж, логично.


 
Плохиш ©   (2004-08-12 10:38) [29]

А "Основная" это уже филиал "Потрепаться"?


 
Anatoly Podgoretsky ©   (2004-08-12 10:55) [30]

REA ©   (12.08.04 10:27) [28]
Открываю большой секрет, любую функцию можно использовать как процедуру без переделки.


 
KSergey ©   (2004-08-12 11:11) [31]

> Плохиш ©   (12.08.04 10:38)
> А "Основная" это уже филиал "Потрепаться"?

Просто реальная задача автора никак не совпадает с озвученной...


 
Плохиш ©   (2004-08-12 11:16) [32]


> KSergey ©   (12.08.04 11:11) [31]

Да и реальная задача как-то невнятно озвучена :-(


 
Кириешки ©   (2004-08-12 11:19) [33]

Anatoly Podgoretsky ©   (12.08.04 10:55) [30]
:))!!

KSergey ©   (12.08.04 11:11) [31]
Реальная задача автора не переустанавливать винду на всех 30 машинах включая админ,а а убить зловредную программу. "Потрепаться" тут непричем! Я спрашивал как из процедуры выйти, а не как отловить человека который эту зловредную программу поставил. Я незнаю как она действует и откуда запускается, зато знаю как окно ее называется. Уже эксперементировал с этим окошком.


 
Плохиш ©   (2004-08-12 11:24) [34]


> Кириешки ©   (12.08.04 11:19) [33]

Тебе уже в [2] ответили! Или ешё про ProcessMessages расказать надо?


 
Кириешки ©   (2004-08-12 11:30) [35]

Плохиш ©   (12.08.04 11:24) [34]
Да, надо.

Я вразумительного ответа так и не нашел


 
Skyle ©   (2004-08-12 11:38) [36]


> [35] Кириешки ©   (12.08.04 11:30)

Прямо-таки ни одного? ;-)


 
KSergey ©   (2004-08-12 11:38) [37]

> [33] Кириешки ©   (12.08.04 11:19)
> Реальная задача автора не переустанавливать винду на всех
> 30 машинах включая админ

Оборжаться.

PS
Я давно понял, что в случае серьезнах проблем (включая серьезное обновление железа) дешевле всегда (!!!) переставить винду и все программы, сколько бы их не было.
Как показывает опыт, это и по времени быстрее, и результат - стабильнее.

Хотя, призраться, и сам постоянно на эти грабли наступаю... все думаю "да вот сейчас чик - и все..." в итоге все равно все переставлять приходится

А вообще, ну что-то странное рассказываете, что автозапускаемую прогу на NT платформе нельзя найти... Ну разве что прихитрющая dll к системному процессу... Так и то, Шевченко грозился как-то найти в любом случае... ;) (прошу прощения, если ошибаюсь)


 
Skyle ©   (2004-08-12 11:42) [38]

ну мне тоже как-то не вериться, что найти её невозможно...
Прямо скажем, совсем не вериться.


 
Кириешки ©   (2004-08-12 11:45) [39]

Тогда скажите как найти, если она размножилась на все машины как вируснятина.


 
KSergey ©   (2004-08-12 11:59) [40]

Винда какая? ХР?
В ней есть msconfig
В ней все автостартуемое видно
Либо для Win2k взять ее от ХР.
Ну либо читать книги про реестр.

Так же посмотреть какие в системе сервисы.
Начал бы я - с процессов. Выделить неизвестные науке - и уже прицельно с ними разбираться. Не думаю, что прога такая уж совсем хитрая, что от процессов прячется, хотя как знать...



Страницы: 1 2 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.047 c
14-1092083478
имя
2004-08-10 00:31
2004.08.29
Новая версия проги


14-1092378729
syte_ser78
2004-08-13 10:32
2004.08.29
Поясните смысл ошибки


3-1091783806
Diman
2004-08-06 13:16
2004.08.29
Импорт данных .txt, .dbf, .doc в Excel в Делфи 5-7


14-1092201173
vov@n
2004-08-11 09:12
2004.08.29
Прогораммироавние в Delphi


1-1092327123
xman
2004-08-12 20:12
2004.08.29
STRING в CHAR