скажем надо раз в 30 секунд что-то сделать, обычно я запоминаю текущее время в какой-нибудь переменной, и по ходу скрипта проверяю не стало ли текущее время больше переменной + n
а тут что-то я запустался, вот пример:
program Time;
var my_timer : TDateTime;
Begin
AddToSystemJournal(TimeToStr(Time));
my_timer := Time + 60/86400;
AddToSystemJournal(TimeToStr(my_timer));
End.
дни вроде бы накручивает, а вот секунды ну никак, выводит одно и то же время:
12:10:42: 12:10:42
12:10:42: 12:10:42
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
использовать что-то раз в n секунд
Используй лучше Timer.
Например так:
Например так:
Code: Select all
program Time;
var ItemIDTime : Cardinal;
Dager : Cardinal;
{$Include 'all.inc'}
Begin
WaitConnection(3000);
Dager := FindType($0F51, BackPack);
if (Dager = 0) then
begin
AddToSystemJournal('Dager not finded');
Exit;
end;
SetARStatus(true);
ItemIDTime := 0;
while true do
begin
WaitConnection(3000);
{Item ID by timer}
if ((Timer > (ItemIDTime + (11 * 1000))) or (ItemIDTime = 0)) then
begin
UseSkill('item identification');
WaitTargetObject(Dager);
ItemIDTime :=Timer;
end;
wait(500);
end;
End.
Last edited by Miralex on 27.02.2006 13:11, edited 1 time in total.
http://msdn.microsoft.com/library/defau ... kcount.aspAcronym wrote: Каково происхождение этого числа?
Спасибо, Miralex, обязательно прочитаю.
Меня интересовала средняя продолжительность цикла в тех или иных скриптах, а как сделать через timer я не понял. Придумалось конвертировать системное время в секунды, фиксировать значения и пользовать полученную разницу.
Время конвертировал следующим:
На выходе получал t : Integer в секундах.
Если не использовать на смене суток, то получаем более менее точные данные.
PS. Это случайно не придумывание велосипеда?
Меня интересовала средняя продолжительность цикла в тех или иных скриптах, а как сделать через timer я не понял. Придумалось конвертировать системное время в секунды, фиксировать значения и пользовать полученную разницу.
Время конвертировал следующим:
Code: Select all
procedure TimeInSeconds(out t : Integer);
var
TL : TStringList;
begin
TL := TStringList.Create;
StrBreakApart(TimeToStr(Now), ':', TL);
if TL.Count > 0 then
begin
t := ((StrToInt(TL.Strings[0]) * 3600) + (StrToInt(TL.Strings[1]) * 60) + (StrToInt(TL.Strings[2])));
end;
TL.Free;
end;
Если не использовать на смене суток, то получаем более менее точные данные.
PS. Это случайно не придумывание велосипеда?