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

Вниз

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

 
Andrew22   (2002-07-17 07:13) [0]

Как определить частоту проца в Delphi?


 
Destroyer ©   (2002-07-17 07:18) [1]

ВРОДЕ ТАК:

function GetCPUSpeed: Double;
const

DelayTime = 500;
var

TimerHi : DWORD;
TimerLo : DWORD;
PriorityClass : Integer;
Priority : Integer;
begin

PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);

asm
DW 310Fh // rdtsc
MOV TimerLo, EAX
MOV TimerHi, EDX
end;

Sleep(DelayTime);

asm
DW 310Fh // rdtsc
SUB EAX, TimerLo
SBB EDX, TimerHi
MOV TimerLo, EAX
MOV TimerHi, EDX
end;

SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);

Result := TimerLo / (1000.0 * DelayTime);
end;


 
Andrew22   (2002-07-17 09:58) [2]

А где это вс. писать? У меня не получилось...


 
Andrew22   (2002-07-17 10:10) [3]

Меня кто-то слышит или видит? Ответьте!!!


 
Игорь Шевченко ©   (2002-07-17 10:13) [4]

В реестре частота процессора записана
HKLM\HARDWARE\Description\System\CentralProcessor\0\~MHz


 
Andrew22   (2002-07-17 10:18) [5]

Спастбо, Игорёк хоть ты то мне помог. Так гараздо проще.
А этот ключ у всех один и тотже?


 
Игорь Шевченко ©   (2002-07-17 10:21) [6]

Для NT - систем - один и тот же, других под рукой нет


 
Eugene Lachinov ©   (2002-07-17 10:48) [7]

По соседству оказалась Windows 95, в реестре информации нет, код указанный выше работает хорошо, показывает такое же значение что и в реестре, проверял на Windows 2000


 
Andrew22   (2002-07-17 11:05) [8]

А в Мелениуме то он какой?


 
Eugene Lachinov ©   (2002-07-17 11:12) [9]

В ME ключа нету


 
Andrew22   (2002-07-17 11:18) [10]

А что делать?


 
Destroyer ©   (2002-07-17 11:23) [11]

Я привел выше функцию, которая вычисляет частоту проца в мегагерцах. Чего ж еще?


 
Song ©   (2002-07-17 12:01) [12]


function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000 * DelayTime);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format("Your CPU speed: %f MHz", [GetCPUSpeed]));
end;


 
Andrew22   (2002-07-24 10:26) [13]

Где это всё писать? У меня не получилось.


 
Andrew22   (2002-07-24 10:28) [14]

Где это всё писать? У меня не получилось. Ни чего не пойму:-(


 
Song ©   (2002-07-24 10:32) [15]

>>Где это всё писать? У меня не получилось.
Прямо в программе!


 
Kin   (2002-07-25 22:01) [16]

Пиши на gorn@r66.ru я тебе исходники скину! В Виде файлов Дельфийских!!!


 
Nalsur   (2002-07-29 11:58) [17]

Ты эти функции на нажатие кнопки навесь, и не забудь функцию обозначить в Interface.



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

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

Наверх




Память: 0.5 MB
Время: 0.017 c
1-21062
Shizoid
2002-09-27 15:57
2002.10.07
VCL source


14-21250
wicked
2002-09-12 11:32
2002.10.07
MinGW-gcc


4-21298
LevVL
2002-08-19 11:28
2002.10.07
Здравствуйте, уважаемые коллеги! Вопрс не совсем простой...


3-20893
Mike13
2002-09-15 18:55
2002.10.07
Проблема с TADOQuery и параметрами типа DateTime


1-21032
Alexey3
2002-09-27 10:57
2002.10.07
Имя пользователя