Delphi 未声明的标识符:

Delphi 未声明的标识符:,delphi,Delphi,我有一个EXCEL表格,里面有各种 C:\Documents and Settings\delfi\MilkDataMgr\FtsExcel.pas(2056):未声明的标识符:SMRBGM167Gallonsgrossda' procedure convertXSLToDelfi(fuel: TFtsFuelTypes; const prefix: string); var ColumnNameMap : TStrings; i : Integer; other

我有一个EXCEL表格,里面有各种

C:\Documents and Settings\delfi\MilkDataMgr\FtsExcel.pas(2056):未声明的标识符:
SMRBGM167Gallonsgrossda'

procedure convertXSLToDelfi(fuel: TFtsFuelTypes; const prefix: string);
var
ColumnNameMap  : TStrings;
i              : Integer;
other          : string;
begin

   { ColumnNameMap  := TStrings; }
   ColumnNameMap  := TStringList.Create;
   ColumnNameMap.Values['smrBgm229GallonsGross']:=' smrBgm167GallonsGrosssDA';
   i := ColumnNameMap.IndexOfName(smrBgm229GallonsGross);
     if i >= 0 then
     smrBgm229GallonsGross:= ColumnNameMap.Values[smrBgm229GallonsGross]
     else
     smrBgm229GallonsGross:= smrBgm229GallonsGross;
end;
在这个链接中有一个详细的问题,我介绍了那里提供的解决方案

我刚开始学习线程,请帮助我。

在中,请注意,
Values
属性括号内的值被引用。这是一根绳子。也许你也想在引号中加上“smrBgm229GallonsGross”,比如:

ColumnNameMap.Values['smrBgm229GallonsGross'] := 'smrBgm167GallonsGrosssDA';
在您的代码中,编译器抱怨它无法识别标识符
smrBgm229GallonsGross
。看看你的代码。您是否声明了这样一个标识符?如果没有,那么您就不能期望编译器知道您对它的要求,并且错误消息非常有意义

(如果您使用的是Perl,编译器可能已经知道您想要什么。在某些情况下,所谓的“裸字”将被解释为字符串文本而不是标识符。但这是Perl,而不是Delphi。)


到目前为止,我只看了第一行代码,其中提到了
smrBgm229GallonsGross
。但是,还有五行代码,您可以在其中查找名称的索引,然后为变量赋值,这些代码需要正确声明变量。在我的示例中,我使用组合变量名
ColumnName
来表示您当时正在处理的任何输入列的名称。我假设您将在循环中迭代列列表,因此您将对每个列执行相同的操作,从Excel电子表格中获取一个值,并将其传输到数据库中相应的列中,该列由同样组成的变量名
RealColumnName

表示您是对的,它在我创建的过程中没有定义。我进一步将它编码为“ColumnNameMap.Values'smrBgm229GallonsGross']:='smrbgm167gallonsgrossda';我在这里创建了一个类型。“我更正了输入错误……我还注释了{ColumnNameMap:=TStrings;}我得到了一个错误”[error]smrXcel.pas(2251):不兼容的类型:“TStrings”和“Class reference”。在你的代码中,它包含在哪里。可以吗?不应该有任何拼写错误需要纠正。你应该复制并粘贴你的真实代码。无论如何,请仔细看看我的代码。您将看到,我从未尝试将类引用分配给任何变量。您是否混淆了声明和赋值语句?只有一列的实际列名为“Bgm167GrosGalnsDA”(存在于EXCEL工作表中);一张Excel表格,里面有各种各样的内容?这个问题真的与未声明的标识符有关吗?如果是这样,这里的代码与错误有什么关系?请复制并粘贴显示错误的代码。