问题标签 [delphi-xe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
3916 浏览

delphi - 如何在客户端仍然连接时更新 DataSnap 服务器?

我们将有状态的 DataSnap 服务器用于一些业务逻辑任务,并提供客户端数据集数据。

如果我们必须更新服务器来修改业务规则,我们将新版本复制到一个新的空文件夹并注册它(取决于 Delphi 版本,只需启动或运行 TRegSvr 实用程序)。

即使旧服务器实例正在运行,我们也可以这样做。但是,注册新版本后,所有新的客户端连接仍将使用当前正在运行的(旧)服务器实例。所有客户端都必须先断开连接,然后新服务器将用于下一个客户端。

有没有办法在注册后立即将所有新客户端连接定向到新服务器

(我知道新的或更改的方法签名也需要更改并重新启动客户端,但这个问题是关于不影响界面的内部修改)

我们使用的是 Socket 连接,所有客户端共享同一个服务器应用程序(只打开一个应用程序窗口)。在早期,我们使用了远程数据模块的不同配置,这导致每个客户端有一个应用程序窗口。也许这可能是一个解决方案?(因为每个新客户端都会启动当前注册的可执行文件)

更新:Delphi XE 是否为“热部署”(更新的服务器)提供一些支持?我们目前使用 Delphi 2009,但如果它提供更轻松的“热部署”实施,我们将升级到 XE。

0 投票
9 回答
4782 浏览

delphi - RAD 工作室 2011 (?)

Embarcadero 的 Delphi / cbuilder 的下一版本(2011 年)是否有任何可用信息?

是否有链接指向与下一个 Delphi / cbuilder 相关的信息,关于何时以及其中可能包含什么?

0 投票
7 回答
16213 浏览

delphi - Delphi 2010/Delphi XE 的免费 ZIP 组件?

您是否知道任何与 Delphi 2010XE兼容的免费组件来管理 ZIP 档案(实际上,只需要读取档案内容和提取文件)?

请不要测试版。

我想到了 ComponentAce 的 ZipForge,但它仅供个人使用免费。不允许分发软件。

0 投票
1 回答
1531 浏览

delphi - 枚举所有实现给定接口的 Delphi 类?

使用 Delphi 2010 中新的扩展 RTTI,Delphi 应用程序(在运行时)能否构建实现给定接口的所有类的列表?

0 投票
4 回答
856 浏览

delphi - 将 win32 VCL 应用程序升级到跨平台

Delphi 2011 将允许编译可以在 Mac OS 上运行的应用程序。(注:这句话是在 Delphi-XE 预览版出来之前写的,当时大家都在说 ProjectX)。

认为可以“迁移到跨平台”一个 win32 应用程序是否现实?

第三方组件供应商是否会让他们的库跨平台,或者这实际上是不可能的?

我使用以下 3rd 方组件:

devexpress - 用户界面

德瓦特 - DAC

报表生成器 - 用户界面

Steema/TeeChart - 用户界面

我不希望有一个向导可以为我完成这项工作,我只是想更好地了解细节。

0 投票
1 回答
14592 浏览

delphi - Delphi 系统单元中的 TMonitor 有什么用?

在阅读了“The Oracle at Delphi”(Allen Bauer)的文章“Simmering Unicode,让 DPL 沸腾”“Simmering Unicode,让 DPL 沸腾(第 2 部分)”之后,我只了解 Oracle :)

文章提到了Delphi并行库(DPL)、无锁数据结构、互斥锁条件变量(这篇维基百科文章转发到' Monitor(synchronization) ',然后介绍了用于线程同步的新TMonitor记录类型并描述了它的一些方法。

是否有带有示例的介绍文章,说明何时以及如何使用这种 Delphi 记录类型?网上有一些文档。

  • TCriticalSection 和 TMonitor 的主要区别是什么?

  • 我可以用PulsePulseAll方法做什么?

  • 它是否有对应的 C# 或 Java 语言?

  • RTL 或 VCL 中是否有任何代码使用这种类型(因此可以作为示例)?


更新:文章为什么 TObject 的大小在 Delphi 2009 中翻了一番?解释说 Delphi 中的每个对象现在都可以使用 TMonitor 记录来锁定,代价是每个实例增加四个字节。

看起来 TMonitor 的实现类似于Java 语言中的 Intrinsic Locks

每个对象都有一个与之关联的内在锁。按照惯例,需要对对象字段进行排他和一致访问的线程必须在访问对象之前获取对象的内在锁,然后在完成访问时释放内在锁。

Delphi 中的WaitPulsePulseAll似乎是Java 编程语言中wait()notify()notifyAll()的对应物。如果我错了,请纠正我:)


更新 2:使用和的生产者/消费者应用程序的示例代码,基于Java(tm) 教程中关于受保护方法的文章(欢迎评论):TMonitor.WaitTMonitor.PulseAll

这种应用程序在两个线程之间共享数据:创建数据的生产者和处理数据的消费者。两个线程使用共享对象进行通信。协调是必不可少的:消费者线程不得在生产者线程交付数据之前尝试检索数据,如果消费者尚未检索旧数据,则生产者线程不得尝试交付新数据。

在此示例中,数据是一系列文本消息,通过 Drop 类型的对象共享:

现在这可以按预期工作,但是有一个细节我可以改进:TMonitor.Enter(Self);我可以选择一种细粒度的锁定方法,使用(私有)“FLock”字段,而不是用 锁定整个 Drop 实例,仅在Put 和 Take 方法由TMonitor.Enter(FLock);.

如果我将代码与 Java 版本进行比较,我还注意到InterruptedExceptionDelphi 中没有可用于取消对Sleep.

更新 3:2011 年 5 月,一篇关于 OmniThreadLibrary 的博客文章提出了 TMonitor 实现中可能存在的错误。它似乎与Quality Central 中的条目有关。评论提到 Delphi 用户提供了一个补丁,但它是不可见的。

更新 4: 2013 年的一篇博客文章表明,虽然 TMonitor 是“公平的”,但它的性能比关键部分的性能差。

0 投票
5 回答
2182 浏览

delphi - 绝地图书馆和德尔福 XE

通常,JEDI 库的安装是使用安装程序完成的。有谁知道安装程序

  1. 适用于 Rad Studio XE(Delphi 和 Builder)
  2. 如果没有,可以很容易地修改这样做
  3. 知道一些手动安装说明吗?

谢谢

0 投票
3 回答
756 浏览

delphi - C++ Builder XE 的 IWFile 修复?

IWFile 在当前版本的 Rad Studio XE 中被破坏。为了解决这个问题,Delphi 用户被要求删除 UTF8ContentParser 行。http://www.atozed.com/intraweb/blog/20100524.EN.aspx

c++ Builder 有一行 #includes UTF8ContentParser.hpp。注释掉这一行并不能解决问题。

有没有人为 C++Builder 想办法解决这个问题?

0 投票
3 回答
5886 浏览

delphi - Delphi XE:丢失的库路径

从 Delphi 2010 升级后,我在 Delphi XE 中丢失了大部分库路径,

现在即使是一些简单的应用程序也将无法编译。

有没有办法恢复库路径中那些丢失的目录条目?

编辑:我找到了一个令人惊讶的解决方案,只需删除此注册表项:

HKEY_CURRENT_USER\Software\Embarcadero\BDS\8.0\Library

并重新启动Delphi,然后将使用正确的默认值再次生成注册表中的密钥,但是您将在那里丢失任何第三方,至少现在它正在工作!

我希望它对遇到同样问题的人有用:)

0 投票
2 回答
1976 浏览

delphi - 获取属于任何类型的单元名称(TRttiType)

我需要获取任何TRttiType.

到目前为止,我已经尝试了以下方法。

1) 使用PTypeData.UnitName,此解决方案有效,但仅当 TTypeKind 为 tkClass 时。

2)解析QualifiedName属性,这个解决方案直到现在都可以正常工作,但我对它不是很满意。

问题是,是否存在另一种获取任何单位名称的可靠方法TRttiType