我需要什么单位范围



我正在尝试安装第三方软件包,但我遇到了一个编译错误:

[DCC Error] fiile/line : E2003 Undeclared identifier: 'Windows'

指的是这条线:

wnd := Windows.GetFocus;

很明显,我没有正确的单元范围,但我需要哪一个(有没有一个通用的方法来找到我需要的use子句)?

我目前有

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}
;

在实现部分没有使用。

[更新]我忘了提。我没能(以同样的方式)把它安装在一台笔记本电脑上。然后我一秒钟就成功了。问题是,我宁愿把它放在桌面上,在新安装XE2启动器后,我会遇到这些问题。

假设您的使用将Windows单元命名为Winapi.Windows,则会显示为这样做。因此,您的代码也必须这样做,并写成

wnd := Winapi.Windows.GetFocus;

当您通过命名完全作用域的单元名称来使用单元时,您还必须在该单元的后续代码中使用完全作用域名称。

现在,如果要使用名称Windows,则必须在uses子句中将该单元命名为Windows,并让单元别名设置完成其工作。如果您通过将其命名为Windows来导入该单元,那么您的原始代码将起作用。

非常清楚:

uses
  Winapi.Windows;

是您现在拥有但需要的:

uses
  Windows;

以便您的代码进行编译。

你的单位范围看起来不错,所以试试这两个选项

中声明使用部分Windows而不是Winapi。Windows

或者像这样修改你的代码

wnd :=  Winapi.Windows.GetFocus;

最新更新