Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Процесор [D6, WinME]


Andrew22 ©   (2002-07-17 07:13:00) 

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


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

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


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

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


Song   (2002-07-24 10:32:00) [3]

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


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

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


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

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


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


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;


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

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


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

А что делать?


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

В ME ключа нету


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

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


Eugene Lachinov   (2002-07-17 10:48:00) [11]

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


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

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


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

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


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

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


Andrew22   (2002-07-17 10:10:00) [15]

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


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

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


Destroyer   (2002-07-17 07:18:00) [17]

ВРОДЕ ТАК:

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо