
A mellékelt példaprogram megnyitása előtt a ProcessorFeature.pas-ban levő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A processzor tulajdonságainak lekérdezéséhez az IsProcessorFeaturePresent nevű függvény fogjuk felhasználni.
Felépítése a következő:

IsProcessorFeaturePresent
BOOL IsProcessorFeaturePresent(
DWORD ProcessorFeature
);
Paraméterek
DWORD ProcessorFeature
Annak a paraméternek az értéke, melyet vizsgálni szeretnénk. Ez a következő lehet:
| Érték |
Paraméter |
Jelentés |
| 0 |
PF_FLOATING_POINT_PRECISION_ERRATA |
Pentium processzor esetén előfordulhat, hogy bizonyos körülmények között lebegőpontos műveletek végzésekor precíziós hiba lép fel. |
| 1 |
PF_FLOATING_POINT_EMULATED |
Azt vizsgálja, hogy a lebegőpontos műveletek szoftveresen vannak-e emulálva. Egy nem-null értékkel tér vissza, amennyiben igen, ellenkező esetben nullát ad. |
| Windows NT 4.0 esetén ez fordítva igaz. Ez a hiba a későbbi verziókban javításra került. |
| 2 |
PF_COMPARE_EXCHANGE_DOUBLE |
A processzor támogatja-e a double típusú adatok összehasonlító és csere műveletét (Pentium, MIPS, és Alpha processzorok esetén). |
| 3 |
PF_MMX_INSTRUCTIONS_AVAILABLE |
Az MMX utasításkészlet támogatott-e. |
| 6 |
PF_XMMI_INSTRUCTIONS_AVAILABLE |
Az SSE (Streaming SIMD Extension), azaz a lebegőpontos SIMD utasításkészlet elérhető-e. |
| 7 |
PF_3DNOW_INSTRUCTIONS_AVAILABLE |
A 3D Now utasításkészlet támogatott-e. |
| 8 |
PF_RDTSC_INSTRUCTION_AVAILABLE |
Az RDTSC (Read Time Stamp Counter) utasítás elérhető-e. |
| 9 |
PF_PAE_ENABLED |
A processzor PAE (Physical Address Extension) engedélyezett-e, azaz támogatja-e a 4GB-nál nagyobb fizikai memória megcímzését az alkalmazások számára (Intel processzorok esetén). |
| 10 |
PF_XMMI64_INSTRUCTIONS_AVAILABLE |
Az SSE2 (Streaming SIMD Extension2), azaz a lebegőpontos SIMD 2 utasításkészlet elérhető-e. |
)
Visszatérési érték
Amennyiben a tulajdonság támogatott, a visszatérési érték egy nem-null érték lesz.
Ellenkező esetben nullát kapunk eredményként.
Maga a függvény boolean típusú eredményt szolgáltat.
Megjegyzés
A fenti paraméterek használatát nem mindegyik processzor, illetve operációs rendszer támogatja.
A forráskódban a komponens létrehozásakor elvégezzük a fent ismertetett paraméterekre a vizsgálatot, majd ennek megfelelően állítjuk be az egyes értékeket:
constructor TProcessorFeature.Create(AOwner: TComponent);
begin
FFLOATPOINTPRECERR:=IsProcessorFeaturePresent(0);
FFLOATPOINTEMU:=IsProcessorFeaturePresent(1);
FCOMPEXCHDOUBLE:=IsProcessorFeaturePresent(2);
FMMX:=IsProcessorFeaturePresent(3);
FSSE:=IsProcessorFeaturePresent(6);
F3DNOW:=IsProcessorFeaturePresent(7);
FRDTSC:=IsProcessorFeaturePresent(8);
FPAEENABLED:=IsProcessorFeaturePresent(9);
FSSE2:=IsProcessorFeaturePresent(10);
inherited;
end;
Az egyes értékeket boolean típusúra deklaráltuk. Azért, hogy az Object Inspector-ban a felhasználó ne tudja átállítani a komponens értékeit, készítünk egy közös függvényt, melyre a published property-k write részében hivatkozunk. Mivel a függvény nem tartalmaz kódot, így amikor valaki meg akarja változtatni valamelyik tulajdonság értékét, az eredeti érték marad változatlanul.
A példaprogramunkban egyenként kiolvassuk a komponens által szolgáltatott paramétereket, és annak megfelelően egy ListBox-ba kiíratjuk a megfelelő üzenetet.
ListBox1.Clear;
if ProcessorFeature1.PF_3DNOW then
ListBox1.Items.Add('A processzor támogatja a 3DNOW! utasításkészletet.')
else
ListBox1.Items.Add('A processzor nem támogatja a 3DNOW! utasításkészletet.');
if ProcessorFeature1.PF_COMP_EXCH_DOUBLE then
ListBox1.Items.Add('A processzor támogatja a double típusú adatok összehasonlító és csere műveletét.')
else
ListBox1.Items.Add('A processzor nem támogatja a double típusú adatok összehasonlító és csere műveletét.');
…