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

标签 delphi delphi-7

编译此代码时,我在 Delphi 7 for in 循环中遇到错误 Link

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;

错误消息:

[Error] Project1.dpr(52): Operator not applicable to this operand type

有什么替代方法吗?或者我该如何解决它?

最佳答案

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;

关于delphi - Delphi 7 中 For..in 循环的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730191/

相关文章:

德尔福2007/2010年展望

delphi - VCL线程中的ShellExecuteEx和Coinitialize

delphi - Delphi 7 中的 FormShow 问题

Delphi定制图纸-发光玻璃

delphi - 在 Delphi XE 或 Delphi XE2 中使用单元 HtmlHelpViewer 时,使用 regsvr32.exe 的 DLL 注册卡住

multithreading - 线程执行结果

delphi ole excel容器,保存文件

delphi-7 - 将缓冲区添加到 ByteArray

json - TJSONObject销毁方法错误

delphi - 如何翻译delphi中数组中声明的字符串?