编译器错误 "E2003 Undeclared identifier"
Compiler error "E2003 Undeclared identifier"
在此代码中:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdIOHandler, IdGlobal, StdCtrls;
function WaitForCommand(args: Pointer): Cardinal; stdcall;
begin
while client.Connected do
if not HandleResponse(client.IOHandler) then
break;
Result := 0;
end;
我有这个错误:
[DCC Error] Unit1.pas(159): E2003 Undeclared identifier: 'HandleResponse'
如何理解消息?
让我们分部分阅读:
-
[DCC Error]
DCC 是 Delphi 编译器,所以它是关于我们的代码,而不是关于链接或打包。
-
Unit1.pas
发生错误的文件。通常 Delphi 的编辑器会自动向您显示此文件。
-
(159)
发生错误的行。通常 Delphi 的编辑器会自动将您的文本光标放入此行。
-
E2003
这是错误代码,以防任何进一步的文本不可用。这就像 HTTP 的状态 404
是一个代码(带有实际文本“未找到”)或者像交通信号灯 red
是一个代码(没有任何进一步的文本告诉您停止)。
-
Undeclared identifier:
此时编译器不知道如何解释现在命名的内容。甚至无法告诉您它是缺少函数、缺少类型还是其他 - 因此整体术语“identifer”。
-
'HandleResponse'
通常 Delphi 的编辑器会自动将您的文本光标放在无法理解的文本开头的问题行中。
你能做什么?
未申报。声明它。然而,只有你自己才能知道你想要什么。你可以
- 声明一个类型:
type
HandleResponse= Boolean;
- 定义一个函数:
function HandleResponse(h: TIdIOHandler): Boolean;
begin
result:= FALSE;
end;
- 从 DLL 导入函数:
function HandleResponse(p: Pointer): LongBool; stdcall; external 'any.dll';
- 添加可能已经拥有它的单位:
uses
WhatIsMissingSoFar;
...或者做其他我还需要记住的事情。但我相信您明白,在这 3 个示例中,identifier HandleResponse
现在 declared。不用我告诉你在使用之前必须做声明吧?
在此代码中:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdIOHandler, IdGlobal, StdCtrls;
function WaitForCommand(args: Pointer): Cardinal; stdcall;
begin
while client.Connected do
if not HandleResponse(client.IOHandler) then
break;
Result := 0;
end;
我有这个错误:
[DCC Error] Unit1.pas(159): E2003 Undeclared identifier: 'HandleResponse'
如何理解消息?
让我们分部分阅读:
-
[DCC Error]
DCC 是 Delphi 编译器,所以它是关于我们的代码,而不是关于链接或打包。
-
Unit1.pas
发生错误的文件。通常 Delphi 的编辑器会自动向您显示此文件。
-
(159)
发生错误的行。通常 Delphi 的编辑器会自动将您的文本光标放入此行。
-
E2003
这是错误代码,以防任何进一步的文本不可用。这就像 HTTP 的状态
404
是一个代码(带有实际文本“未找到”)或者像交通信号灯red
是一个代码(没有任何进一步的文本告诉您停止)。 -
Undeclared identifier:
此时编译器不知道如何解释现在命名的内容。甚至无法告诉您它是缺少函数、缺少类型还是其他 - 因此整体术语“identifer”。
-
'HandleResponse'
通常 Delphi 的编辑器会自动将您的文本光标放在无法理解的文本开头的问题行中。
你能做什么?
未申报。声明它。然而,只有你自己才能知道你想要什么。你可以
- 声明一个类型:
type HandleResponse= Boolean;
- 定义一个函数:
function HandleResponse(h: TIdIOHandler): Boolean; begin result:= FALSE; end;
- 从 DLL 导入函数:
function HandleResponse(p: Pointer): LongBool; stdcall; external 'any.dll';
- 添加可能已经拥有它的单位:
uses WhatIsMissingSoFar;
...或者做其他我还需要记住的事情。但我相信您明白,在这 3 个示例中,identifier HandleResponse
现在 declared。不用我告诉你在使用之前必须做声明吧?