我正在尝试安装第三方软件包,但是出现了编译错误:
[DCC Error] fiile/line : E2003 Undeclared identifier: 'Windows'
指的是这一行:
wnd := Windows.GetFocus;
似乎很明显我没有正确的单位范围 - 但我需要哪些(并且有一般方法可以找到我需要的使用条款)?
我目前有
Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;
Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;Winapi;System.Win
[更新]
interface
uses
SysUtils, winapi.windows, Classes, Controls, ExtCtrls, Graphics, StdCtrls,
Dialogs, IniFiles, winapi.messages, Forms, Math
{$IFDEF DELPHI6_LVL}
, Variants
{$ENDIF}
;
在强制部分没有用处。
[Upate] 我忘了提。我(以同样的方式)在一台笔记本电脑上安装它失败了。然后我成功了一秒钟。问题是我宁愿在我的桌面上安装它,在全新安装XE2启动器之后我遇到了这些问题。
答案 0 :(得分:3)
你的单位范围看起来很好,所以试试这两个选项
在使用部分声明 Windows 而不是 Winapi.Windows
或修改你的代码
wnd := Winapi.Windows.GetFocus;
答案 1 :(得分:3)
假设您使用Windows单位的名称,它似乎是通过将单位命名为Winapi.Windows来实现的。所以你的代码也必须这样做并写成
wnd := Winapi.Windows.GetFocus;
通过命名完全范围的单位名称来使用单位时,还必须在该单位的后续代码中使用完全范围的名称。
现在,如果要使用Windows名称,则必须在uses子句中将单元命名为Windows,并让单元别名设置完成其工作。如果您通过将其命名为Windows来导入该单元,则原始代码将起作用。
非常清楚:
uses
Winapi.Windows;
是你现在拥有的,但你需要:
uses
Windows;
用于编译代码。