简单问题,怎么才能把这个函数的返回值转换成字符串放在一edit1.text中。50分 你这个TCPUIDARRAY是什么类型的,也就是返回值是什么类型 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for i:=1 to 4 dobegins:=s+IntToStr(GetCPUID[i]);end 强制转化呢?直接用edit1.text:=String(GetCPUID);呢? unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TCPUIDARRAY=array[1..4] of Longint; TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function GetCPUID:TCPUIDARRAY; assembler;register;asmPUSH EBX {Save affected register}PUSH EDIMOV EDI,EAX {@Resukt}MOV EAX,1DW $A20F {CPUID Command}STOSD {CPUID[1]}MOV EAX,EBXSTOSD {CPUID[2]}MOV EAX,ECXSTOSD {CPUID[3]}MOV EAX,EDXSTOSD {CPUID[4]}POP EDI {Restore registers}POP EBXend;procedure TForm1.Button1Click(Sender: TObject);var i :integer; s :String;beginfor i:=1 to 4 dobegins:=s+IntToStr(GetCPUID[i]);end;Edit1.Text :=s;end;end. 获得Intel CPU的信息下面这个函数会返回一个字符串列表及特性集合,这个函数只对Intel 486及以上的CPU有效。其他CPU将返回[cpuNonIntel] 或 [cpuNoCPUID].用法:GetCpuFeatures(memo1.Lines);支持的特性---------------------------------------CPU Family 6CPU Model 7CPU Stepping 3On-Chip FPUVirtualMode ExtensionsDebugging ExtensionsPage Size ExtensionsTime Stamp CounterModel Specific RegistersPhysical Address ExtensionsMachine Check ExtensionsCMPXCHG8B InstructionFast System CallMemory Type Range RegistersPage Global EnableMachine Check ArchitectureConditional Move InstructionPage Attribute Table32 Bit Page Size ExtensionIntel MMX TechnologyFast Floating Point Save and RestoreStreaming SIMD Extensionsunit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;type TForm2 = class(TForm) private { Private declarations } public { Public declarations } end; TCpuFeature = (cpuNoCPUID,cpuNonIntel,cpuOnChipFPU, cpuVirtualModeExtensions,cpuDebuggingExtensions, cpuPageSizeExtensions,cpuTimeStampCounter, cpuModelSpecificRegisters,cpuPhysicalAddressExtensions, cpuMachineCheckExtensions,cpuCMPXCHG8B,cpuOnChipAPIC, cpuFastSystemCall,cpuMemoryRangeRegisters,cpuPageGlobalEnable, cpuMachineCheckArchitecture,cpuConditionalMoveInstruction, cpuPageAttributeTable,cpu32bitPageSzExtension, cpuProcessorSerialNum,cpuMMXTechnology,cpuFastFloatingPoint, cpuSIMDExtensions); TCpuFeatures = set of TCpuFeature; function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;var Form2: TForm2;implementation{$R *.DFM}function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;const FPU_FLAG = $0001; VME_FLAG = $0002; DE_FLAG = $0004; PSE_FLAG = $0008; TSC_FLAG = $0010; MSR_FLAG = $0020; PAE_FLAG = $0040; MCE_FLAG = $0080; CX8_FLAG = $0100; APIC_FLAG = $0200; SEP_FLAG = $0800; MTRR_FLAG = $1000; PGE_FLAG = $2000; MCA_FLAG = $4000; CMOV_FLAG = $8000; PAT_FLAG = $10000; PSE36_FLAG = $20000; PSNUM_FLAG = $40000; MMX_FLAG = $800000; FXSR_FLAG = $1000000; SIMD_FLAG = $2000000;var IsIntel : boolean; VendorID : array [0..12] of char; IntelID : array [0..12] of char; FeaturesFlag,CpuSignature : DWord; Temp : DWord; RetVar : TCpuFeatures; CpuType : byte; procedure CheckFeature(FeatureFlag : DWord; const Item : string; cpuFeatureType : TCpuFeature); begin if FeaturesFlag and FeatureFlag = FeatureFlag then begin if FeatureList <> nil then FeatureList.Add(Item); include(RetVar,cpuFeatureType); end; end;begin RetVar := []; if FeatureList <> nil then FeatureList.Clear; IsIntel := false; IntelId := 'GenuineIntel'#0; VendorID := '------------'#0; try asm //确认是否支持Intel CPUID调用 push ebx push esi push edi mov eax,0 // Set up for CPUID instruction db 00fh // CPUID - Get Vendor and check INTEL db 0a2h mov dword ptr VendorId,ebx mov dword ptr VendorId[+4],edx mov dword ptr VendorId[+8],ecx cmp dword ptr IntelId,ebx //检查是否是Intel CPU jne @@EndCPUID cmp dword ptr IntelId[+4],edx jne @@EndCPUID cmp dword ptr IntelId[+8],ecx jne @@EndCPUID // 非Intel CPU mov byte ptr IsIntel,1 // Set IsIntel to true cmp eax,1 // Ensure 1 is valid input for CPUID jl @@EndCPUID // Else jump to end mov eax,1 db 00fh // CPUID - Get features,family etc. db 0a2h mov CpuSignature,eax mov FeaturesFlag,edx shr eax,8 // Isolate family and eax,0fh mov byte ptr CpuType,al // Set cputype with family @@EndCPUID : pop edi // 恢复寄存器 pop esi pop ebx end; // 检查特性掩码 if IsIntel then begin if FeatureList <> nil then begin FeatureList.Add('CPU Family ' + IntToStr(CpuType)); Temp := (CpuSignature shr 4) and $0f; FeatureList.Add('CPU Model ' + IntToStr(Temp)); Temp := CpuSignature and $0f; FeatureList.Add('CPU Stepping ' + IntToStr(Temp)); end; CheckFeature(FPU_FLAG,'On-Chip FPU',cpuOnChipFPU); CheckFeature(VME_FLAG, 'VirtualMode Extensions',cpuVirtualModeExtensions); CheckFeature(DE_FLAG,'Debugging Extensions',cpuDebuggingExtensions); CheckFeature(PSE_FLAG,'Page Size Extensions',cpuPageSizeExtensions); CheckFeature(TSC_FLAG,'Time Stamp Counter',cpuTimeStampCounter); CheckFeature(MSR_FLAG, 'Model Specific Registers',cpuModelSpecificRegisters); CheckFeature(PAE_FLAG, 'Physical Address Extensions', cpuPhysicalAddressExtensions); CheckFeature(MCE_FLAG, 'Machine Check Extensions',cpuMachineCheckExtensions); CheckFeature(CX8_FLAG,'CMPXCHG8B Instruction',cpuCMPXCHG8B); CheckFeature(APIC_FLAG,'On Chip APIC',cpuOnChipAPIC); CheckFeature(SEP_FLAG,'Fast System Call',cpuFastSystemCall); CheckFeature(MTRR_FLAG, 'Memory Type Range Registers',cpuMemoryRangeRegisters); CheckFeature(PGE_FLAG,'Page Global Enable',cpuPageGlobalEnable); CheckFeature(MCA_FLAG, 'Machine Check Architecture',cpuMachineCheckArchitecture); CheckFeature(CMOV_FLAG, 'Conditional Move Instruction', cpuConditionalMoveInstruction); CheckFeature(PAT_FLAG,'Page Attribute Table',cpuPageAttributeTable); CheckFeature(PSE36_FLAG, '32 Bit Page Size Extension',cpu32BitPageSzExtension); CheckFeature(PSNUM_FLAG, 'Processor Serial Number',cpuProcessorSerialNum); CheckFeature(MMX_FLAG,'Intel MMX Technology',cpuMMXTechnology); CheckFeature(FXSR_FLAG, 'Fast Floating Point Save and Restore', cpuFastFloatingPoint); CheckFeature(SIMD_FLAG,'Streaming SIMD Extensions',cpuSIMDExtensions); end else begin if FeatureList <> nil then FeatureList.Add('Non-Intel or >486 Chip - Features Unknown'); include(RetVar,cpuNonIntel); end; except if FeatureList <> nil then FeatureList.Add('No CPUID Support'); include(RetVar,cpuNoCPUID); end; Result := RetVar;end;end. 关于组件的应用,强烈求助!!! 100分求助,关于打印切纸的问题,地址在下面 谁帮忙看看这段代码有什么错误? 有谁知道什么工具或网站可以给香港的手机发短消息? 我的程序要拷到别人的机器上用,需要什么哪些文件 一个简单但是捆饶我的问题! 怎样把'.jpg'格式的字段显示到报表里去??? 双线程串口通讯的问题,谁有原码让我借鉴一下,500分(急) 谁有delphi中进行数据库导入和导出的代码,帮帮忙!50分!! 请教:如何在delphi5中用word打开一特定文件(是变量的) StringGrid中只能输入和粘贴实数 TMenu和TTreeView的紧密协作实现安全权限的设置
begin
s:=s+IntToStr(GetCPUID[i]);
end
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TCPUIDARRAY=array[1..4] of Longint; TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}function GetCPUID:TCPUIDARRAY; assembler;register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
s :String;
beginfor i:=1 to 4 do
begin
s:=s+IntToStr(GetCPUID[i]);
end;
Edit1.Text :=s;end;end.
下面这个函数会返回一个字符串列表及特性集合,这个函数只对Intel 486及以上的CPU有效。其他CPU将返回[cpuNonIntel] 或 [cpuNoCPUID].用法:GetCpuFeatures(memo1.Lines);支持的特性
---------------------------------------
CPU Family 6
CPU Model 7
CPU Stepping 3
On-Chip FPU
VirtualMode Extensions
Debugging Extensions
Page Size Extensions
Time Stamp Counter
Model Specific Registers
Physical Address Extensions
Machine Check Extensions
CMPXCHG8B Instruction
Fast System Call
Memory Type Range Registers
Page Global Enable
Machine Check Architecture
Conditional Move Instruction
Page Attribute Table
32 Bit Page Size Extension
Intel MMX Technology
Fast Floating Point Save and Restore
Streaming SIMD Extensionsunit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations } end; TCpuFeature = (cpuNoCPUID,cpuNonIntel,cpuOnChipFPU,
cpuVirtualModeExtensions,cpuDebuggingExtensions,
cpuPageSizeExtensions,cpuTimeStampCounter,
cpuModelSpecificRegisters,cpuPhysicalAddressExtensions,
cpuMachineCheckExtensions,cpuCMPXCHG8B,cpuOnChipAPIC,
cpuFastSystemCall,cpuMemoryRangeRegisters,cpuPageGlobalEnable,
cpuMachineCheckArchitecture,cpuConditionalMoveInstruction,
cpuPageAttributeTable,cpu32bitPageSzExtension,
cpuProcessorSerialNum,cpuMMXTechnology,cpuFastFloatingPoint,
cpuSIMDExtensions); TCpuFeatures = set of TCpuFeature; function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;var Form2: TForm2;
implementation
{$R *.DFM}function GetCpuFeatures(FeatureList : TStrings = nil) : TCpuFeatures;
const
FPU_FLAG = $0001;
VME_FLAG = $0002;
DE_FLAG = $0004;
PSE_FLAG = $0008;
TSC_FLAG = $0010;
MSR_FLAG = $0020;
PAE_FLAG = $0040;
MCE_FLAG = $0080;
CX8_FLAG = $0100;
APIC_FLAG = $0200;
SEP_FLAG = $0800;
MTRR_FLAG = $1000;
PGE_FLAG = $2000;
MCA_FLAG = $4000;
CMOV_FLAG = $8000;
PAT_FLAG = $10000;
PSE36_FLAG = $20000;
PSNUM_FLAG = $40000;
MMX_FLAG = $800000;
FXSR_FLAG = $1000000;
SIMD_FLAG = $2000000;var IsIntel : boolean;
VendorID : array [0..12] of char;
IntelID : array [0..12] of char;
FeaturesFlag,CpuSignature : DWord;
Temp : DWord;
RetVar : TCpuFeatures;
CpuType : byte; procedure CheckFeature(FeatureFlag : DWord;
const Item : string;
cpuFeatureType : TCpuFeature);
begin
if FeaturesFlag and FeatureFlag = FeatureFlag then begin
if FeatureList <> nil then FeatureList.Add(Item);
include(RetVar,cpuFeatureType);
end;
end;begin
RetVar := [];
if FeatureList <> nil then FeatureList.Clear;
IsIntel := false;
IntelId := 'GenuineIntel'#0;
VendorID := '------------'#0; try
asm //确认是否支持Intel CPUID调用
push ebx
push esi
push edi
mov eax,0 // Set up for CPUID instruction
db 00fh // CPUID - Get Vendor and check INTEL
db 0a2h
mov dword ptr VendorId,ebx
mov dword ptr VendorId[+4],edx
mov dword ptr VendorId[+8],ecx
cmp dword ptr IntelId,ebx //检查是否是Intel CPU
jne @@EndCPUID
cmp dword ptr IntelId[+4],edx
jne @@EndCPUID
cmp dword ptr IntelId[+8],ecx
jne @@EndCPUID // 非Intel CPU mov byte ptr IsIntel,1 // Set IsIntel to true
cmp eax,1 // Ensure 1 is valid input for CPUID
jl @@EndCPUID // Else jump to end mov eax,1
db 00fh // CPUID - Get features,family etc.
db 0a2h
mov CpuSignature,eax
mov FeaturesFlag,edx
shr eax,8 // Isolate family
and eax,0fh
mov byte ptr CpuType,al // Set cputype with family @@EndCPUID : pop edi // 恢复寄存器
pop esi
pop ebx
end; // 检查特性掩码
if IsIntel then begin
if FeatureList <> nil then begin
FeatureList.Add('CPU Family ' + IntToStr(CpuType));
Temp := (CpuSignature shr 4) and $0f;
FeatureList.Add('CPU Model ' + IntToStr(Temp));
Temp := CpuSignature and $0f;
FeatureList.Add('CPU Stepping ' + IntToStr(Temp));
end; CheckFeature(FPU_FLAG,'On-Chip FPU',cpuOnChipFPU);
CheckFeature(VME_FLAG,
'VirtualMode Extensions',cpuVirtualModeExtensions);
CheckFeature(DE_FLAG,'Debugging Extensions',cpuDebuggingExtensions);
CheckFeature(PSE_FLAG,'Page Size Extensions',cpuPageSizeExtensions);
CheckFeature(TSC_FLAG,'Time Stamp Counter',cpuTimeStampCounter);
CheckFeature(MSR_FLAG,
'Model Specific Registers',cpuModelSpecificRegisters);
CheckFeature(PAE_FLAG,
'Physical Address Extensions',
cpuPhysicalAddressExtensions);
CheckFeature(MCE_FLAG,
'Machine Check Extensions',cpuMachineCheckExtensions);
CheckFeature(CX8_FLAG,'CMPXCHG8B Instruction',cpuCMPXCHG8B);
CheckFeature(APIC_FLAG,'On Chip APIC',cpuOnChipAPIC);
CheckFeature(SEP_FLAG,'Fast System Call',cpuFastSystemCall);
CheckFeature(MTRR_FLAG,
'Memory Type Range Registers',cpuMemoryRangeRegisters);
CheckFeature(PGE_FLAG,'Page Global Enable',cpuPageGlobalEnable);
CheckFeature(MCA_FLAG,
'Machine Check Architecture',cpuMachineCheckArchitecture);
CheckFeature(CMOV_FLAG,
'Conditional Move Instruction',
cpuConditionalMoveInstruction);
CheckFeature(PAT_FLAG,'Page Attribute Table',cpuPageAttributeTable);
CheckFeature(PSE36_FLAG,
'32 Bit Page Size Extension',cpu32BitPageSzExtension);
CheckFeature(PSNUM_FLAG,
'Processor Serial Number',cpuProcessorSerialNum);
CheckFeature(MMX_FLAG,'Intel MMX Technology',cpuMMXTechnology);
CheckFeature(FXSR_FLAG,
'Fast Floating Point Save and Restore',
cpuFastFloatingPoint);
CheckFeature(SIMD_FLAG,'Streaming SIMD Extensions',cpuSIMDExtensions);
end
else begin
if FeatureList <> nil then
FeatureList.Add('Non-Intel or >486 Chip - Features Unknown');
include(RetVar,cpuNonIntel);
end;
except
if FeatureList <> nil then FeatureList.Add('No CPUID Support');
include(RetVar,cpuNoCPUID);
end; Result := RetVar;
end;end.