编译此代码Link时,我在循环中遇到Delphi 7错误{/ 3}}
procedure GetProcessorInfo;
Var
SMBios : TSMBios;
LProcessorInfo : TProcessorInformation;
LSRAMTypes : TCacheSRAMTypes;
begin
SMBios:=TSMBios.Create;
try
WriteLn('Processor Information');
if SMBios.HasProcessorInfo then
for LProcessorInfo in SMBios.ProcessorInfo do // <-- Error here
begin
...
end;
...
end;
错误讯息:
[错误] Project1.dpr(52):运算符不适用于此操作数类型
任何替代方式?或者我该如何解决?
答案 0 :(得分:14)
Delphi 7不支持for .. in
,因此您必须自己迭代TSMBios.ProcessorInfo
数组
procedure GetProcessorInfo;
Var
SMBios : TSMBios;
LProcessorInfo : TProcessorInformation;
LSRAMTypes : TCacheSRAMTypes;
LIdx : Integer; // add this
begin
SMBios:=TSMBios.Create;
try
WriteLn('Processor Information');
if SMBios.HasProcessorInfo then
// for LProcessorInfo in SMBios.ProcessorInfo do
for LIdx := Low( SMBios.ProcessorInfo ) to High( SMBios.ProcessorInfo ) do
begin
LProcessorInfo := SMBios.ProcessorInfo[LIdx];
...
end;
...
end;
答案 1 :(得分:2)
for循环语法是在Delphi 2005中引入的.Delphi 7不支持这种语法。您需要重新编写循环代码以使用基于for循环的传统索引。
for i := 0 to high( SMBios.ProcessorInfo ) do
begin
LProcessorInfo := SMBios.ProcessorInfo[i];
....
end;