情况是这样的,我需要在程序中使用TNT Unicode控件。以前用的D7,TNT工作的很好。
昨天装了D2007。但是TNT最后一个免费版本并不直接支持D2007的安装,在TNT的安装文件中有个BDS4文件夹,安装D2007时安装程序自动创建的文件夹是 5.0 ,也就是说那个BDS4文件夹中的安装文件只比D2007低一个版本。我试着装了一下,成功了。但在D2007编译我用D7写的程序(程序中当然用了Tnt控件)时出现了如下错误:
[DCC Error] TntIniFiles.pas(988): E2003 Undeclared identifier: 'WStrLen'
[DCC Error] TntIniFiles.pas(1030): E2003 Undeclared identifier: 'WStrLen'
[DCC Error] frmSettingUnit.pas(9): F2063 Could not compile used unit 'TntIniFiles.pas'我查了一下,那个WStrLen 在 TntWideStrUtils.pas 文件中。而 出错的 TntIniFiles.pas 文件中已经在 uses 部分引用了 TntWideStrUtils.pas 。这是怎么回事?该怎么解决?
谢谢大家关注我的问题,给大伙拜个年了~~~PS: D2007的图标什么含义?怎么像个喇嘛头?那圈红色就像是喇嘛的帽子。
昨天装了D2007。但是TNT最后一个免费版本并不直接支持D2007的安装,在TNT的安装文件中有个BDS4文件夹,安装D2007时安装程序自动创建的文件夹是 5.0 ,也就是说那个BDS4文件夹中的安装文件只比D2007低一个版本。我试着装了一下,成功了。但在D2007编译我用D7写的程序(程序中当然用了Tnt控件)时出现了如下错误:
[DCC Error] TntIniFiles.pas(988): E2003 Undeclared identifier: 'WStrLen'
[DCC Error] TntIniFiles.pas(1030): E2003 Undeclared identifier: 'WStrLen'
[DCC Error] frmSettingUnit.pas(9): F2063 Could not compile used unit 'TntIniFiles.pas'我查了一下,那个WStrLen 在 TntWideStrUtils.pas 文件中。而 出错的 TntIniFiles.pas 文件中已经在 uses 部分引用了 TntWideStrUtils.pas 。这是怎么回事?该怎么解决?
谢谢大家关注我的问题,给大伙拜个年了~~~PS: D2007的图标什么含义?怎么像个喇嘛头?那圈红色就像是喇嘛的帽子。
新年快乐!
http://www.picupine.com/0211696x
那个函数是这样的
{$IFNDEF COMPILER_9_UP}
function WStrLen(Str: PWideChar): Cardinal;
begin
Result := WStrEnd(Str) - Str;
end;function WStrEnd(Str: PWideChar): PWideChar;
begin
// returns a pointer to the end of a null terminated string
Result := Str;
While Result^ <> #0 do
Inc(Result);
end;
{$ENDIF}WStrLen 调用了 WStrEnd。而这两个函数被那个预编译符号包裹着,是那个预编译捣的鬼?
COMPILER_9_UP 是指的编译器版本吗?
另写一个函数倒是可以,只是我最想弄明白为什么说未定义。PS: 技术不行啊。所以大年三十了还在折腾。
如果没有定义compiler_9_up就编译程序。
你试着把他去掉。我在delphi4项delphi7转时,也有好多不兼容,设置了好多{$IFDEF DELPHI_7}之类的预编译块。
这几天有事,没能上网,不好意思。在TNT控件的目录下发现了 TntCompilers.inc 这个文件。里面有许多预编译符号,我再去试着弄一下,也许能解决。