- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 The Tomes of Delphi 中包含的代码中的 TDRecLst 和 TDSplyCm 单位,但我在 TDBasics.pas 中收到编译器错误:
我在TDStrRes.inc中遇到类似的错误:
出了什么问题,如何解决?
The code可从作者处获取。
最佳答案
显然,您使用的 Delphi 版本比 Delphi 6 更新。尽管在 2005 年进行了更新,但该书中的代码最多只能检测到该版本的 Delphi。 TDDefine.inc 根据它检测到的版本定义了许多编译器符号,但是当您使用的版本不是它识别的任何版本时,它就不会定义任何符号。当编译器在 TDBasics.pas 中遇到这样的代码时,这最终会导致问题;
implementation
uses
{$IFDEF Delphi1}
WinTypes, WinProcs;
{$ENDIF}
{$IFDEF Delphi2Plus}
Windows;
{$ENDIF}
{$IFDEF Kylix1Plus}
Types, Libc;
{$ENDIF}
{$IFDEF Delphi1}
{$R TDStrRes.r16}
{$ENDIF}
{$IFDEF Delphi2Plus}
{$R TDStrRes.r32}
{$ENDIF}
{$IFDEF Kylix1Plus}
{$R TDStrRes.r32}
{$ENDIF}
const
UnitName = 'TDBasics';
由于 Delphi1
、Delphi2Plus
或 Kylix1Plus
均未定义,因此 uses
子句为空。当我们忽略所有编译器指令和非事件代码块时,编译器最终会看到如下代码:
implementation
uses
const
UnitName = 'TDBasics';
这就是编译器提示需要标识符而不是 const
的原因。
要解决这个问题,您需要教 TDDefine.inc 识别您的 Delphi 版本。不过,更简单的方法可能是忽略所有版本检测代码并对适用于您正在使用的版本的所有符号进行硬编码。只要您从不使用任何早于 Delphi 6 的版本,所有符号都将适用于您的所有版本。
在TDDefine.pas中找到以下代码块:
{$IFDEF VER140}
{$DEFINE Delphi6}
{$DEFINE Delphi1Plus}
{$DEFINE Delphi2Plus}
{$DEFINE Delphi3Plus}
{$DEFINE Delphi4Plus}
{$DEFINE Delphi5Plus}
{$DEFINE Delphi6Plus}
{$DEFINE HasAssert}
{$ENDIF}
删除第一行和最后一行,以便无条件处理剩余的 $DEFINE
指令。
关于delphi - 为什么 "The Tomes of Delphi"处的代码无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949486/
我想在 TomEE 中测试 hikaricp。我已将 jar 文件添加到我的 lib 文件夹中,并尝试像这样定义资源: .... 当我这样做时,我在启动时收到以下错误: org.apache.xb
平台:TomEE Web 配置文件 1.5.0。 我正在尝试做一件非常基本的事情,为 MySQL 设置数据源。我已经阅读了官方指南(http://openejb.apache.org/configur
我最近在“Red Hat Enterprise Linux Server (6.6)”上安装了“apache-tomee-webprofile-1.7.2”。 我可以通过访问 x.x.x.x:8080
如何在 IntelliJ IDEA VM 选项中进行设置。 我需要设置 set JAVA_OPTS="-Dtomee.serialization.class.whitelist=" set CATAL
正如标题所说。我对 Java EE6 认证的内部工作原理了解不多。但是,TomEE+ 似乎只是 TomEE 的超集,所以 TomEE+ 不应该也通过 Java EE6 认证吗? 我们刚刚决定为我们内部
我正在使用 Apache TomEE(本地主机上的 apache-tomee-plus-1.5.2)处理一些 JEE 网络应用程序,并尝试从 TomEE 主页上的链接访问这些服务。 现在,我记得早些时
尝试在 Windows 上启动 TomEE 时出现以下错误: SEVERE: OpenEJBContextConfig.processAnnotationsFile: failed. java.uti
我的服务器有 48 个 CPU,在 TomEE+ 7.0.2 上托管 Java EE 7 REST API。 一些 API 在运行并行算法时需要使用尽可能多的 CPU。 并行化部分不需要任何数据库或其
所以我试图找到任何引用文档或使用这三个的重要示例。 我发现的“最好的”是: TomEE/OpenEJB JAXRS refactoring Some tips for TomEE andJAXRS c
我正在 TomEE 8 中运行我的应用程序。我想从我的数据库中读取一些属性并将其传递给应用程序。 我看到了 https://rmannibucau.wordpress.com/2014/08/06/t
我正在使用单个 TomEE 实例来部署 2 个 Web 应用程序。两个应用程序使用不同的数据库和不同的实体。 应用程序 2 集成到应用程序 1 中,因此我在运行时随时需要这两个架构。 我在 tomee
假设我有一个包含 persistence.xml 配置和 jpa 实体的 jar。我希望在不同的应用程序之间共享相同的持久性单元。 例如,部署一个 war 应用程序并注入(inject)相同的持久性单
规范:jdk1.8,TOMEE702,win10 问题:为 open-ejb3.X 安装和使用 TOMEE 的方法/内容/哪个? 网址:http://tomee.apache.org/download
我下载并安装了 TomEE 1.7.1。在启动服务器时抛出 IllegalArgumentException。 可能是什么问题,因为我还没有部署任何应用程序。 INFO: Using 'openejb
我有一个关于 TomEE 和使用 tomee.xml 中指定的数据源的奇怪问题。值得注意的是,我使用的是 Netbeans、TomEE 和 MySQL。在 Ubuntu 13.04(Xubuntu 最
无法部署应用程序,但出现异常 java.lang.Exception:持久性单元:持久性 -750441533localhost:未找到名称“openejb/PersistenceUnit/persi
我已经编写了代码,以便可以在不重新启动服务器的情况下更改 EntityManagerFactory 属性。我使用 RESTful Jersey 服务对其进行了测试。 我应该编写junit测试来测试这个
我想将 war 文件部署到 TomEE 但失败了: 原因: javax.naming.NameNotFoundException: Name openejb/Resource/applic
我在 Eclipse 中工作。我已经添加了一个启动良好的 TomEE 服务器,但似乎在创建 MySQL 数据源时出现问题。 我在 TomEE 1.7.2 中定义了以下数据源: jdbcDri
我们正在尝试从 GlassFish 迁移到 TomEE,但是在 TomEE 上部署自定义资源适配器时遇到了问题。在 GlassFish 上,只需部署 RAR 文件、配置资源适配器配置,仅此而已。我们如
我是一名优秀的程序员,十分优秀!