未申报的标识符:

时间:2009-09-22 23:29:52

标签: delphi

我有各种各样的EXCEL表格

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

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;

详细问题在此链接中,我在那里提供了解决方案 how to create Delphi 4 structure to map column names in XLS to column names in SQL

我只是接受线索,请帮助我。

1 个答案:

答案 0 :(得分:1)

the code I gave you中,请注意Values属性括号内的值为引用。这是一个字符串。也许你打算在引号中加上“smrBgm229GallonsGross”,就像这样:

ColumnNameMap.Values['smrBgm229GallonsGross'] := 'smrBgm167GallonsGrosssDA';

在您的代码中,编译器抱怨它无法识别标识符smrBgm229GallonsGross。看看你的代码。 声明了这样的标识符?如果没有,那么你不能指望编译器知道你对它的要求,并且错误信息非常有意义。

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

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