Delphi 7中For..in循环的替代方案?

时间:2014-05-19 05:23:18

标签: delphi delphi-7

编译此代码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):运算符不适用于此操作数类型

任何替代方式?或者我该如何解决?

2 个答案:

答案 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;