2012-02-13 10 views
4

:この行を指しこれにはどの単位スコープが必要ですか?私はサードパーティのパッケージをインストールしようとしていますし、私はコンパイルエラーを取得

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

impementationセクションで何の用途を持っていません。

[Upate] 私は言及を忘れました。 1つのラップトップにインストールするのに失敗しました(同じ方法で)。その後、私は1秒で成功しました。問題は、デスクトップにインストールしたいのですが、XE2スターターを新しくインストールした後に、これらの問題が発生します。

+1

多分私は何かが不足しているかもしれませんが、これは通常、デルファイの古いバージョンでテストされたサードパーティのパッケージで発生するエラーではありません。ただし、コピーしてDelphi XE2の新しいフォームのイベントハンドラに貼り付けると、自分のコードで表示されます。 –

+0

+1ありがとうございます、それは悲しいことです:-(XE2スターターを新しくインストールしました。非常に広くインストールされたパッケージを手動でインストールすることはできません(soem PCでは手に入りません) – Mawg

答えて

2

あなたの使用がWindowsユニットに全く名前をつけていないと仮定すると、ユニットの名前をWinapi.Windows。だから、あなたのコードは、そうしなければならない、あなたは完全にスコープユニット名を命名することにより、ユニットを使用する場合、あなたはまた、そのユニットに、後続のコードでは、完全スコープ名を使用する必要があります

wnd := Winapi.Windows.GetFocus; 

のように書くこと。

ここでWindowsという名前を使用する場合は、uses句でユニットをWindowsとして指定し、ユニットのエイリアス設定をそのジョブにする必要があります。 Windowsに名前を付けてユニットをインポートした場合、元のコードが機能します。

非常に明確であるために:

uses 
    Winapi.Windows; 

は、あなたが今持っているものですが、必要があるでしょう:

uses 
    Windows; 

コンパイルするあなたのコードのために。

+0

+1ですが、Rudyに私のコメントを見てください。それは1台のPC上で動作せず、作者はすべてではなく動作するはずだと言う。だから私のデスクトップに何が問題なのですか? – Mawg

+1

あなたが見ているエラーの説明は、RRUZ、Henrickと私が言うことです。さらに助けが必要な場合は、ユニットのuses節を表示して、コンパイルエラーが発生するようにすることをお勧めします。 –

+0

+1ありがとうございます。私はqeustionにuses節を追加します。 – Mawg

3

あなたのユニットスコープは正常に見えるので、あなたのにこれら二つのオプション

宣言をしようとすると、代わりにWinapi.Windows

かそこら

wnd := Winapi.Windows.GetFocus; 
のようにコードを修正するの
セクション のWindowsを使用しています
+2

これは逆です。 Winapi.Windowsである場合、修飾された識別子はWinapi.Windows.GetFocusでなければなりません。セクションセクションのエントリがWindowsの場合、既存のコードは問題ありません。 –

+1

@DavidHeffernan最初はWindowsの代わりにWinapi.Windowsを書いていましたが、Windows.WinApiの代わりにWindowsを意味していました。 – RRUZ

+1

@DavidHeffernan、英語の貧しい知識が私を欺く時があります。 – RRUZ

関連する問題

 関連する問題