我需要什么样的单位范围?

时间:2012-02-13 05:52:07

标签: delphi delphi-xe2

我正在尝试安装第三方软件包,但是出现了编译错误:

[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启动器之后我遇到了这些问题。

2 个答案:

答案 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;

用于编译代码。