Какие единицы измерения мне нужны для этого? - PullRequest
5 голосов
/ 13 февраля 2012

Я пытаюсь установить сторонний пакет и получаю ошибку компиляции:

[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 Starter я получаю эти проблемы.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Предполагая, что ваше использование вообще называет модуль Windows, он, по-видимому, делает это, называя модуль Winapi.Windows.И поэтому ваш код также должен это делать и быть записан как

wnd := Winapi.Windows.GetFocus;

Когда вы используете единицу, называя имя полной области, вы также должны использовать полное имя в последующем коде этой единицы.

Теперь, если вы хотите использовать имя Windows, вы должны назвать устройство как Windows в предложении использования и позволить настройке псевдонима устройства выполнять свою работу.Если вы импортировали устройство, назвав его Windows, тогда ваш оригинальный код будет работать.

Чтобы было очень ясно:

uses
  Winapi.Windows;

- это то, что у вас есть сейчас, но вам потребуется:

uses
  Windows;

для вашего кода для компиляции.

3 голосов
/ 13 февраля 2012

Ваша область действия выглядит хорошо, поэтому попробуйте эти два варианта

объявите в вашем разделе Windows вместо Winapi.Windows

или измените ваш код следующим образом

wnd :=  Winapi.Windows.GetFocus;
...