Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.27;
Скачать: [xml.tar.bz2];

Вниз

такой вопрос   Найти похожие ветки 

 
dlp   (2002-05-13 21:33) [0]

Как правильно пользоваться процедурой sleep?
примерный код:

procedure...
label start;
begin
start;
{пытался всунуть сюда, но время замедлялось ТОЛЬКО 1 раз, то есть при повторном возвращении к этому месту время не замедлялось}
...
...
...
goto change;
end;


 
dlp   (2002-05-13 22:49) [1]

это очень для меня важно...


 
Almaz   (2002-05-14 02:06) [2]


> dlp © (13.05.02 22:49)
> это очень для меня важно...

А Sleep то где ?
Код подробнее изложить можешь ?

Удачи.


 
Лёша   (2002-05-14 02:19) [3]

Откуда код такой дикий?
А ты уверен, что Sleep вызывается не один раз?


 
Slym   (2002-05-14 06:14) [4]

Кто-то еще лабелами пользуется? :(


 
DeMoN-777   (2002-05-14 09:04) [5]

Например так,
Sleep(30);

Если в цикле, то дописывай в цикл
for i:=1 to 10 do
begin
Sleep(30);
Application.ProcessMessages;
end;


 
Александр_30   (2002-05-14 09:12) [6]

Значица такс, беги за пЫвом... Сходил? Откупоривай и делай глоток. Готово? Ок, теперь за работу. Процедура Sleep приостанавливает работу программы на заданное количество миллисекунд. Формат процедуры такой - Sleep(N), где N - то самое количество мск, на которое надо остановиться. Все, хлебай пЫво. Теперь перейдем к примерам.

Самый простой - вызвать Sleep один раз.

Procedure GoSleep (Sender: Tobject);
begin
Sleep(10);
end;


Второй пример сложнее, и его ты поймешь только после банки пЫва!
Допивай и читай дальше!


Procedure GoSleep2 (Sender: Tobject);
Var
i: Integer;
begin
for i:=1 to 100 do
Sleep(10);
end;




И еще один вариант. Вызывать Sleep по таймеру. Бросаешь на формочку таймер, задаешь ему интервал срабатывания и в обработчике onTimer пишешь


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Sleep(20);
end;


Все, дохлебывай пЫво! Кстати, профи делают так:


const
N: Cardinal = 10; - количество миллисекунд;

или так
const
N: LongInt = 10;



потом в любой процедуре, описанной выше пишешь Sleep(N) и все.
Выхлебал все пЫво? Иди спать, щас еще один Sleep будет! хе...:)


 
Александр_30   (2002-05-14 09:15) [7]

Ну Александер, ты крут! :)


 
cpp   (2002-05-14 09:18) [8]

А зачем ПРОФФИ в объявлении процедуры GoSleep, GoSleep2 указывают параметр Sender?


 
Александр_30   (2002-05-14 09:36) [9]

Дыкс, в Делфи без указания Sendera никуда не деться. Пишешь в private
Procedure GoSleep2 (Sender: Tobject); затем жмешь Ctrl+Shift+C Делфя генерит тебе процедурку. Потом пишешь в ней, что тебе надо.

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


 
MBo   (2002-05-14 09:45) [10]

Крут неописуемо!
С интересом узнал о незаменимой роли Sender в Delphi.


 
Anatoly Podgoretsky   (2002-05-14 09:46) [11]

Ты Дельфи то видел?
У тебя обычные процедуры, не члены класса.
Да и в private для процедур тоже не требуется Sender.


 
Александр_30   (2002-05-14 10:02) [12]

Собственно говоря, тема не о роли Sender, а о Sleep.... Еще скажите, что примеры, мной приведенные не работают....


 
Song   (2002-05-14 10:04) [13]

Я даже теряюсь как мне удобней написать: GoSleep(что-то тут) или Sleep(10) :)))


 
dlp   (2002-05-14 19:20) [14]

проблема в следующем:
моя программа-игра:

procedure enemyturn;
label change;
begin
sleep(100);
...
...
изменение координат врага
вывод графики врагов с изменёнными координатами
goto change;
end;

так вот,враг(его изображение) перемещается(видимый экран)
не пошагово, а проходит какое-то время и оказывается сразу в конечной точке маршрута,то есть я так понимаю, что он не учитывает все последующие СЛИПЫ


 
Cobalt   (2002-05-14 20:41) [15]

А где change? change-то где???!!!!

!Требуйте долива пены после отстоя пЫва!


 
dlp   (2002-05-15 00:32) [16]

procedure enemyturn;
label change;
begin
change;
sleep(100);
...
...
изменение координат врага
вывод графики врагов с изменёнными координатами
goto change;
end;



 
JC   (2002-05-15 01:01) [17]

А не пробывал без label"ов делать просто вместо goto change;
пиши enemyturn, ну или используй Timer... вконце концов ВНИМАТЕЛЬНО перечитай текст программы!!!


 
dlp   (2002-05-15 11:43) [18]

чиатал, всё перечитал, ничего...


 
MBo   (2002-05-15 12:15) [19]

перед великим и могучим goto поставь
Application.ProcessMessages;


 
dlp   (2002-05-15 15:52) [20]

УРААА!!!
2MBo : большое программерское спасибо...
кстати, может обьясните что Application.ProcessMessages; значит?


 
Tonie   (2002-05-15 16:11) [21]

Help -> TAplication -> ProcessMessages
Call ProcessMessages to permit the application to process messages that are currently in the message queue. ProcessMessages cycles the Windows message loop until it is empty, and then returns control to the application.

А про вездесущего Sender-а - это действительно весело :-)


 
eSKey   (2002-05-15 16:11) [22]

Очень интересно, где я смогу лицезреть/поиграть в такую эпическую гаму уважаемого автора... Уверен, что день, когда он узнает о Application.ProcessMessages и возможностях Timer станет последним днем китов игровой индустрии :)


 
dlp   (2002-05-15 23:21) [23]

2eSKey-Дему можешь скачать здесь
www.dlproach.chat.ru/invasion.zip


 
Anonymous   (2002-05-15 23:51) [24]

Александр_30, стиль изложения журнала "хакер". Меня такое бесит...



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

Форум: "Основная";
Текущий архив: 2002.05.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.006 c
3-88324
Fareader
2002-04-29 19:51
2002.05.27
Two-Phase Commit


1-88564
Maniyak
2002-05-16 16:40
2002.05.27
Патч как написать


1-88442
Саша
2002-05-17 12:21
2002.05.27
Обновление окнон программы при выполнении длинной операции.


1-88461
Ironwit
2002-05-17 16:51
2002.05.27
как получить размер символов в пискелях


1-88428
Art1
2002-05-16 11:50
2002.05.27
3 вопрооса по RxRichEdit.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский