iReklama  |  PC Svět  |  vyhledávací centrála  |  Diskuzní fórum  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz - čte si nás 39 čtenářů
 
PC Svět
Hlavní stránka
ASP
Aktuality
Assembler
C,C++
Cracking
Delphi
Diskuze
Grafika
Hardware
Hry a zábava
HTML
Internet
JavaScript
Komunikace
Literatura
Linux
Microsoft Office
Turbo Pascal
Perl
PHP
Software
Tiskové zprávy
Visual Basic
Windows
WWW katalog

Knihovna zdr. kódů

Nabídka skriptů aj.

Homepage autora
Služby
Guestbook
  kniha návštěv pro
  každého
MailForm
  zasílání výsledků
  formulářů na e-mail
Programy
DOS Commander
WinMan
Windows Tools
Informace
O PC Světě
Přehled rubrik
Reklama
Výsledky anket
Přehled novinek


ISSN 1213-6042

šéfredaktor
Petr Šťastný
admin@pcsvet.cz

zástupce šéfredaktora
Pavel Rauš
raus@pcsvet.cz

Stránka je optimalizo-
vána pro prohlížeč
Internet Explorer 5.0
při rozlišení 800x600

 © Petr Šťastný 2002
   All rights reserved

PC Svět
ikonka PC Světa



Linux - zdarma a legálně



TOPlist

Vytisknout   Poslat   Komentáře (8)   Přidat komentář

Zjištění frekvence procesoru

Jak lze v Delphi snadno zjistit frekvenci procesoru

Mám tady pro vás výpis programu, který zjistí a zapíše pracovní frekvenci vašeho procesoru. Věšina z toho je napsána v Assembleru a jsou použity funkce Windows, ale to můžete ze zdrojového kódu vidět sami.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;

    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;



var
  Form1: TForm1;
  cpuspeed : integer;

implementation


{$R *.DFM}

 function GetCPUSpeed: variant;
const
  DelayTime = 500; // measure time in ms
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 // 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;

Na formuláři musíte vytvořit dva prvky label a jeden prvek timer. Ten timer by tam ani být nemusel, ale někdy mi to ze začátku hlásilo nesmysly, proto jsem tam raději přidal to zpomalení na začátku.

Celý program si můžete stáhnout jako hotový EXE soubor, nebo jen zdojový kód:

Hotový EXE soubor (ZIP, 154 KB)
Zdrojové kódy (ZIP, 5 KB)

Autor: Jan Sova, jsovova@iol.cz, informace a seznam článků


Komentáře k článku
Frequence procesoru, Josef Bilek, 31.8.2001 0:40:28
detekce frekvence, Mi.Chal., 31.8.2001 9:31:41
kopírování, Kuba, 31.8.2001 19:22:15
Opak oni kopiruji, Jan Sova, 31.8.2001 19:25:54
Odpověď pro blbouna..., Mc Hydro, 13.12.2001 14:59:28
Re: Odpověď pro blbouna..., Josef Bilek, 13.12.2001 17:15:30
utilitka, DaleRunner, 15.3.2002 20:58:04
Re: utilitka, Michal Novotný, 26.5.2002 11:38:35

Přidat komentář


Poslední články ze stejné rubriky
Univerzální ukládání konfigurace do DB
Seznam běžících procesů a jejich ukončení
Provozovatel:
PES.cz
Poslední články
Freeware ke stažení zdarma (1.)
IW FTP Client – povedený český FTP klient
Otřesová vlna v 3D MAXU
Generování obrázků v PHP (2.)
Mozilla 1.1 vs Internet Explorer 6.0
Hodnocení článku
nejlepší <----> nejhorší
    
Stav: 2,5
Počet: 8
Informace o článku
Datum 31.8.2001
Čtenářů 1935
Autor Jan Sova
Rubrika Delphi - tipy, triky
Nový redaktor
  Chcete psát články
  pro PC Svět či se
  stát redaktorem?

Články honorovány!

  Informace zde
EInfo
  Chcete být informováni
  o každém novém článku
  na PC Světě?

Zadejte svůj e-mail:

MSN.ATLAS.CZ
Hladat.sk

hlavní stránka  |  vyhledávací centrála  |  Diskuze  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz

Se svými dotazy či problémy se obracejte na diskuzní fórum, věci týkající se PC Světa směřujte na e-mail pcsvet@pcsvet.cz

Šíření obsahu tohoto serveru nebo jeho části je bez souhlasu redakce zakázáno.
(c) PC Svět 2002 - Všechna práva vyhrazena.