ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

28.04.2010, 21:32
|
|
Участник форума
Регистрация: 23.07.2009
Сообщений: 261
Провел на форуме: 4435957
Репутация:
539
|
|
Перед началом цикла присвой переменной, значение true.
Код кинь.
|
|
|

28.04.2010, 21:34
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Сообщение от stepashka_
Подскажите как при нажатии на button остановить цикл while
глобально
В потоке
PHP код:
while flag do
begin
что то делаем
end;
клавиша
PHP код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Flag:=false;
end;
P.s. Команда Break останавливает работу цикла.
|
|
|

28.04.2010, 21:59
|
|
Познавший АНТИЧАТ
Регистрация: 09.11.2009
Сообщений: 1,077
Провел на форуме: 7879791
Репутация:
265
|
|
А for ... to ... do как остановить и потом продолжить?
|
|
|

28.04.2010, 22:10
|
|
Познающий
Регистрация: 22.11.2009
Сообщений: 53
Провел на форуме: 33126
Репутация:
0
|
|
Всем привет.Народ, плиз помогите дописать прогу(паскаль). Она рисует куб и мне теперь надо закрасить все его грани поочередно
Код:
Program lab4;
uses graph, crt;
var
x, y, a, c, Driver, Mode:integer;
begin
Driver := detect;
Mode := VGA;
InitGraph(Driver, Mode, 'C:\FPC\2.2.0\bin\i386-win32');
clrscr;
x:=200;
y:=200;
a:=100;
c:=20;
{основание нижнее}
setcolor(15);
line(x,y,x+a,y);
line(x+a,y, x+a+a div 2, y-a div 2);
line(x,y,x+a div 2, y-a div 2);
line (x+a div 2, y-a div 2, x+a+a div 2, y-a div 2 );
{Верхнее основание}
line(x,y-a, x+a, y-a);
line(x+a,y-a, x+a+a div 2, y-a-a div 2);
line(x,y-a,x+a div 2, y-a-a div 2);
line (x+a div 2, y-a-a div 2, x+a+a div 2, y-a-a div 2 );
{передняя грань}
line(x,y,x, y-a);
line(x+a,y, x+a, y-a);
{боковая грань }
line (x+ a div 2, y-a div 2, x+ a div 2, y -a div 2 -a);
{боковая грань 2 }
line (x+a+ a div 2, y-a div 2, x+a+a div 2, y-a div 2 -a);
readln;
CloseGraph;
end.
заранее благодарен.
|
|
|

28.04.2010, 22:13
|
|
Новичок
Регистрация: 23.02.2009
Сообщений: 13
Провел на форуме: 74303
Репутация:
0
|
|
Доброго времени суток!
Возник вопрос:
Как написать на С++ строку с Паскаля:
CONST st:Array[0..1] of String [5]=('left','right');
|
|
|

28.04.2010, 22:24
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от stepashka_
А for ... to ... do как остановить и потом продолжить?
сверяешь глобальную boolean переменую в начале цикла (между begin ... end), и если она true, то прекращаешь цикл процедурой break; ну и на кнопку ставишь присвоение этой boolean переменой значения true
|
|
|

28.04.2010, 23:22
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
ОМГ вы опять друг другу мозг выносите)))) stepashka все очень просто!
объявляем глобальную переменную:
PHP код:
Form1: TForm1;
Stop: Boolean = False;
вот сам цикл:
PHP код:
procedure TForm1.Button1Click(Sender: TObject);
i:integer;
begin
Button2.Enabled:=True;
Button1.Enabled:=False;
Stop:=False;
for i:=1 to n do
begin
//тут код
Application.ProcessMessages;
if not stop then break;
end;
end;
вот код остановки:
PHP код:
procedure TForm1.Button2Click(Sender: TObject);
begin
Stop:=True;
Button2.Enabled:=False;
Button1.Enabled:=True;
end;
и усе))) для тех кто решит спросить зачем я делал вот так:
PHP код:
Button2.Enabled:=False;
Button1.Enabled:=True;
для того что бы в случае срабатывания этого кода:
PHP код:
Application.ProcessMessages;
не было возможности заново запустить цикл!
дополняю:
А for ... to ... do как остановить и потом продолжить?
для этого можешь начальную позицию цикла объявить в глобальной переменной! и потом при нажатии он будет продолжать с того места, где закончил, например:
объявляем глобальную переменную:
PHP код:
Form1: TForm1;
Stop: Boolean = False;
k:integer;
теперь, при остановке цикла, переменная будет оставлять свое значение там где остановилась... а чтобы обнулить можешь сделать 3 кнопку, которая будет обнулять счетчик
вот код для первой кнопки с самим циклом:
PHP код:
procedure TForm1.Button1Click(Sender: TObject);
i:integer;
begin
Button2.Enabled:=True;
Button1.Enabled:=False;
Stop:=False;
for i:=k to n do
begin
//тут код
Application.ProcessMessages;
if not stop then break;
k:=k+1;
end;
end;
тем самым, если остановили, то в k останется то значение, на котором остановились!
пы сы еси есть какие то недочеты, то не ругайте, писал на пьяную голову 
Последний раз редактировалось EndLeSSDre@M; 29.04.2010 в 11:41..
|
|
|

29.04.2010, 01:26
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме: 828081
Репутация:
84
|
|
Прекратите так писать, видеть не могу уже
if stop then.....
if not stop then.....
|
|
|

29.04.2010, 06:58
|
|
Постоянный
Регистрация: 27.10.2008
Сообщений: 380
Провел на форуме: 1249808
Репутация:
149
|
|
помойму если чтото надо приостанавливать, а потом запускать, рациональней использовать потоки.
|
|
|

29.04.2010, 10:23
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
Сообщение от RumShun
помойму если чтото надо приостанавливать, а потом запускать, рациональней использовать потоки.
Полностью с тобой согласен! Но так как я не умею ими пользоваться, поэтому и пишу не через потоки  надо учить
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|