gpt4 book ai didi

delphi - 在 Delphi 中,在 Excel Interop Worksheets 集合上使用 for 循环时,如何处理 "no GetEnumerator present"错误?

转载 作者:行者123 更新时间:2023-12-02 04:29:06 26 4
gpt4 key购买 nike

我正在尝试编写一个 Delphi 程序,它将循环遍历 Excel 文件中的每个工作表并格式化一些单元格。不过,我在尝试对 Workbook.Worksheets 集合使用 for-in 循环时收到错误。错误具体是:

[DCC Error] Office.pas(36): E2431 for-in statement cannot operate on collection type 'Sheets' because 'Sheets' does not contain a member for 'GetEnumerator', or it is inaccessible

发生这种情况的代码行是:

for Worksheet in Workbook.Worksheets do

Worksheet和Workbook的定义如下:

var ExcelApp: ExcelApplication;
var Workbook: ExcelWorkbook;
var Worksheet: ExcelWorksheet;

我正在将此代码从 C# 移植到 Delphi,它可以在其中运行。有谁知道为什么我会收到此 GetEnumerator 错误?我正在使用 Office 2007 Excel Interop 文件和 Embarcadero® Delphi® 2010 版本 14.0.3593.25826。

最佳答案

我不确定 C# 如何处理可枚举集合,但对于 Delphi,它会在集合上查找名为 GetEnumerator 的方法,该方法返回一个枚举器。枚举数必须是至少包含以下两个成员的数据结构:

public
function MoveNext: boolean;
property Current: <some type> read <some read method>;
end;

如果 Delphi 说“Sheets”不包含“GetEnumerator”的成员,或者它不可访问,那么这正是它所说的意思。要么表格上没有 GetEnumerator,要么它不是公共(public)方法。 Sheets 的定义是什么样的?

关于delphi - 在 Delphi 中,在 Excel Interop Worksheets 集合上使用 for 循环时,如何处理 "no GetEnumerator present"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com