【问题标题】:Cant Find Class In DelphiDelphi找不到类
【发布时间】:2014-07-09 21:03:57
【问题描述】:

我有一个 delphi 应用程序,目前有 3 个单元。

我有两个表格Start_Interface_u,Login_u 以及一个名为TMobileSystem_u 的附加单元(没有表格)。

TMobileSystem_u我有几节课。

TWebSystem = Class
  Protected
    FRequest: TRequest;

  Public
    Constructor Create();
    Function Login(SUsername: String; SEmail: String; SPassword: String): String;
End;

但是当我将单元添加到我的任何表单的用途中时,我无法引用一个类。

例如: 在Login_u 中,我想添加一个名为WebSystemInterface : TWebSystem 的变量,问题是当我使用crtl + space 时它在使用中找不到TMobileSystem_u,当我将它声明为时它找不到类一个变量。

可能出了什么问题?有谁知道吗?

** 编辑

这是尝试编译项目后的输出

正在检查项目依赖项... 编译 Exotic_Pets.dproj(调试,Win32) “Exotic_Pets.dpr”的 dcc 命令行 c:\program files (x86)\embarcadero\studio\14.0\bin\dcc32.exe -$O- -$W+ --no-config -M -Q -TX.exe -AGenerics.Collections=System.Generics.Collections ; Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG -E.\Win32\Debug -I"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program files (x86)\embarcadero\studio\14.0\lib\ Win32\发布"; C:\Users\Jacques\Documents\Embarcadero\Studio\14.0\Imports;"c:\program files (x86)\embarcadero\studio\14.0\Imports"; C:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp;"c:\program files (x86)\embarcadero\studio\14.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -LEC:\Users\Public\Documents\Embarcadero\Studio\14.0\Bpl -LNC:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp -NU.\Win32\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap; -O"c:\程序文件 (x86)\embarcadero\studio\14.0\lib\Win32\release";C:\Users\Jacques\Documents\Embarcadero\Studio\14.0\Imports;"c:\program 文件 (x86)\embarcadero\studio\14.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp;"c:\program files (x86)\embarcadero\studio\14.0\include"; "C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -R"c:\program files (x86)\embarcadero\studio\14.0\lib\Win32\release"; C:\Users\Jacques\Documents\Embarcadero\Studio\14.0\Imports;"c:\program files (x86)\embarcadero\studio\14.0\Imports"; C:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp;"c:\program files (x86)\embarcadero\studio\14.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -U"c:\program 文件 (x86)\embarcadero\studio\14.0\lib\Win32\debug";"c:\program 文件 (x86)\embarcadero\studio\14.0\lib\Win32\release";C:\Users\Jacques\Documents\Embarcadero\Studio\14.0\Imports;"c:\program 文件 (x86)\embarcadero\studio\14.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp;"c:\program files (x86)\embarcadero\studio\14.0\include"; "C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -V -VN -NBC:\Users\Public\Documents\Embarcadero\Studio\14.0\Dcp -NHC:\Users\Public\Documents\Embarcadero\Studio\14.0\hpp -NO.\Win32\Debug Exotic_Pets.dpr [dcc32 错误] Login_u.pas(39):E2003 未声明的标识符:'TWebSystem' [dcc32 致命错误] Start_Interface_u.pas(43): F2063 无法编译使用的单元“Login_u.pas” 失败的 经过时间:00:00:00.3

【问题讨论】:

  • 您是否可能在实现使用子句中添加TMobileSystem_u 单元并尝试在接口部分添加对TWebSystem 的引用?
  • @Andy_D - 我在顶部的使用中添加单位,因为我想在表单的 protected 声明中添加变量
  • 愚蠢的问题,但是您是否真的尝试过编译项目或者您是否依赖于 Class Completion?
  • 我实际上已经尝试编译该项目然后我得到了错误(请参阅我的问题的编辑版本)
  • 所有源文件都在同一个文件夹吗?如果没有看到Login_u 的代码,很难知道发生了什么。 TMobileSystem_u 单元是否在另一个项目中编译?

标签: class delphi


【解决方案1】:
  1. 如果您的单位位于不同的文件夹中,并且它们的路径未在 DPR 中设置,也未在项目“搜索路径”中设置,则会发生这种情况。

  2. uses 部分中使用时,Ctrl+Space 可能并不总是建议可用单位的完整长度。我会跳过这条线索。

  3. 如果将单元添加到 implementation 部分,则无法在此之前访问它的常量/类/等(例如,在 TForm 字段、类型定义和 var 部分中)

  4. implementation 部分中声明的类不能被其他单元看到或访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2011-03-01
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多