Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2010, 09:45   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос Создание высокочастотного таймера с нуля.

Такой вот вопрос как создать высокочастотный таймер с нуля средствами Delphi, а то нужен для движка игр, чтобы можно было установить время вызова процедуры в 1 мили секунду, вот как такое сотворить??? Помогите
пожалуйста!
VintProg вне форума Ответить с цитированием
Старый 03.05.2010, 09:57   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...мультимедийный ...TimeSetEvent(10, 0, @TimeCallBack, 0, TIME_PERIODIC), но не обольщайтесь, windows не система реального времени и гарантируемая точность составляет 10мс/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.05.2010, 10:13   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Еще где то слыхал что надо использовать эти функции:
QueryPerformanceCounter
QueryPerformanceFrequency
GetTickCount
А что они значат не знаю???
VintProg вне форума Ответить с цитированием
Старый 03.05.2010, 10:21   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

тырк 1 2 3
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.05.2010, 13:33   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

http://programmersforum.ru/attachmen...chmentid=14233
пыщь
JTG вне форума Ответить с цитированием
Старый 07.05.2010, 10:45   #6
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Почему не выполняются два таймера???

Код:
unit Timer_Engine;
//VintProg --------------------------------------
//Êóñîê Äâèæêà:
//Âûñîêî÷àñòîòíûå òàéìåðû  2010 ãîä

interface

uses
 Windows, Classes;

Type
 TTimerHigh = record
   Procedure_call : pointer;
   Interval       : Int64;
  end;

PTimerHigh = ^TTimerHigh;

var
 Timer_List       : TList   = nil;
 Pause_ALL_Timers : boolean = false;

function GetHighTick : Int64;
function Timers_Counts : integer;
procedure INIT_Timer_Engine;
procedure MAIN_UPDATE_PROCESS_TIMERS;
function Timer_Create(Procedure_call : pointer; Interval : Int64): Pointer;

implementation

uses
 Unit1;

//---------------- Èíèöèàëèçàöèÿ Äâèæêà Òàéìåðîâ -------------------------------
//==============================================================================
procedure INIT_Timer_Engine;
begin
  Timer_List := TList.Create;
end;
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
function  GetHighTick : Int64;
var
 x : Int64;

begin
 QueryPerformanceCounter(x);
 result := x;
end;
//------------------------------------------------------------------------------


//---------- Ãëàâíàÿ îáðîáîòêà âñåõ òàéìåðîâ -----------------------------------
//---------- Çàíîñèòñÿ â ïîòîê >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//==============================================================================
procedure MAIN_UPDATE_PROCESS_TIMERS;
var
 TimerHigh : PTimerHigh;
 i : integer;
 x : Int64;
 procedure_ : procedure;

begin

 if Pause_ALL_Timers = true then
    exit;   


x := GetHighTick; //1000

while Pause_ALL_Timers = false do
   begin
   i := 0;

             
 while i < Timer_List.Count do
    begin
     TimerHigh := Timer_List.Items[i];


       if (GetHighTick - X) >= TimerHigh.Interval then
          begin
            procedure_  := TimerHigh.Procedure_call;
            procedure_;
            x := GetHighTick; //1000
          end;

     Inc(i);
    end;

      
  end;


end;
//------------------------------------------------------------------------------
//==============================================================================


//-----------------------------
function Timers_Counts : integer;
begin
  Result := Timer_List.Count;
end;



//------------ Ñîçäàíèå òàéìåðà ------------------------------------------------
function Timer_Create(Procedure_call : pointer; Interval : Int64): Pointer;
var
 TimerHigh : PTimerHigh;

Begin
 New(TimerHigh);
  TimerHigh^.Procedure_call := Procedure_call;
   TimerHigh^.Interval := Interval;
    Timer_List.Add(TimerHigh);
end;
//------------------------------------------------------------------------------





end.
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание таймера Borland Delphi vitalina21 Помощь студентам 20 19.01.2010 20:23
отсрочка таймера Lifefine Общие вопросы Delphi 4 15.01.2010 03:39
Создание браузерной онлайн игры с нуля IXA Gamedev - cоздание игр: Unity, OpenGL, DirectX 18 07.01.2010 00:10
PE - файл, создание с нуля... heart Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 05.05.2009 01:11
использование таймера KancJler Помощь студентам 13 19.04.2008 01:13