2012-02-13 4 views
4

Я пытаюсь установить пакет 3 участника, и я получаю ошибку компиляции:Какой объем области мне нужен?

[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 

[Update]

interface 
uses 
SysUtils, winapi.windows, Classes, Controls, ExtCtrls, Graphics, StdCtrls, 
Dialogs, IniFiles, winapi.messages, Forms, Math 
{$IFDEF DELPHI6_LVL} 
, Variants 
{$ENDIF} 
; 

Нет использует в разделе impementation.

[Upate] Я забыл упомянуть. Мне не удалось (точно так же) установить его на одном ноутбуке. Затем мне удалось на секунду. Беда в том, что я предпочел бы это на своем рабочем столе, и после новой установки стартера XE2 я получу эти проблемы.

+1

Возможно, мне что-то не хватает, но это не ошибка, которая обычно происходит в сторонних пакетах, проверенных для более старых версий Delphi. Однако вы бы увидели его в своем собственном коде, если вы скопируете и вставьте обработчик событий новой формы в Delphi XE2. –

+0

+1 Спасибо, увы, он :-(Новая установка XE2 стартера и я не могу вручную установить очень широко установленный пакет (на компьютерах soem, он работает на одном) – Mawg

ответ

2

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

wnd := Winapi.Windows.GetFocus; 

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

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

Чтобы быть совершенно ясно:

uses 
    Winapi.Windows; 

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

uses 
    Windows; 

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

+0

+1 но, пожалуйста, посмотрите мой комментарий к Руди. Он работал без одного ПК, и авторы говорят, что он должен работать без всех. Итак, что случилось с моим рабочим столом? – Mawg

+1

Объяснение ошибки, которую вы видите, это то, что RRUZ, Хенрик и я. Если вам нужна дополнительная помощь, я предлагаю вам показать предложение uses, которое приводит к ошибке компиляции. –

+0

+1 ОК, спасибо, я добавлю предложение uses к qeustion – Mawg

3

Вы блок Сфера выглядит отлично, так что попробуйте эти два варианта

декларировать в вашем использует раздел Окна вместо Winapi.Windows

или изменить ваш код так

wnd := Winapi.Windows.GetFocus; 
+2

Это наоборот. Если раздел использования запись - Winapi.Windows, квалифицированный идентификатор должен быть также Winapi.Windows.GetFocus. Если запись раздела использует Windows, существующий код в порядке. –

+1

@DavidHeffernan Я только что исправил первый обходной путь, изначально я написал 'Winapi.Windows вместо Windows', но я имел в виду' Windows вместо Windows.WinApi' – RRUZ

+1

@DavidHeffernan, бывают случаи, когда мое плохое знание английского языка играет на меня. – RRUZ

Смежные вопросы