问题标签 [rad-studio]

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 投票
0 回答
142 浏览

xml - Delphi XML 订单

我在 Rad Studio 2007 的 Delphi 项目中创建具有正确复杂类型和元素顺序的 XML 时遇到问题。我已经从 XSD 自动生成了一个接口类。但与 C# 相比,例如我无法为元素设置顺序。当我创建 XML 文档时,复杂类型/元素按照它们从代码中设置的顺序进行设置。这给了我一个不正确的 XML,因为另一方强制 XSD 顺序。

有没有办法使用 Delphi XML IXMLDocument/IXMLNode/IXMLNodeCollection 类或在接口类中强制在 Delphi 中创建 XML 的顺序?还是必须手动完成?

0 投票
1 回答
152 浏览

android - Firemonkey TSpinBox 高度

我正在使用 C++ Builder 10.3,我的应用程序适用于 Android,请注意我对 C++ Builder 非常陌生

我正在尝试更改 TSpinBox 的字体大小和高度,但我无法更改高度。

我尽最大努力移植以下 Delphi 解决方案
Firemonkey TEdit 高度,但没有任何乐趣,我完全输了。AdjustFixedSize 被宣布为私有我不认为它被覆盖,我也尝试创建一个设置器并调用它,但我再次无法让它工作。我遇到的最大问题是我缺乏 C++ Builder 知识。

标题

CPP

代码

0 投票
2 回答
677 浏览

delphi - 如何检查表单是否在 Delphi 中关闭?

调用后:

我怎么知道这个表单是真的关闭了还是已经在FormCloseQuery中使用CanClose:=false取消了?

更新:

为了更好地解释:MainForm可以关闭一个名为Form1的子窗体。所以,我的问题是当MainForm调用Form1.Close()时,MainForm怎么知道 Form1 已经真正关闭并且没有从它的FormCloseQuery 中取消?
如果Form1关闭,则将其销毁。有没有办法在调用Close()后查看Form1是否已被销毁?

0 投票
1 回答
659 浏览

delphi - 设置字体设置不适用于创建动态标签

我正在尝试在动态创建的TLabel对象中设置字体颜色和字体大小,但它不起作用。

结果:

图片

0 投票
1 回答
75 浏览

delphi - RAD Studio 10.3 中的空对象存储库列表

几天前,我在我的系统 Windows 10 Pro 64bit 上安装了新版本的 RAD Studio 10.3。它需要以管理员权限登录,我做到了。然后我从非管理帐户启动 RAD Studio,当 IDE 启动时,我单击“文件 - 新建”,对象存储库中的所有默认项目都丢失了。没有“控制台应用程序”或“Windows 应用程序”之类的项目。只有文件夹“Other - Unit Test”,包含三个项目:“代码模板”、“项目组”、“文本文件”。

然后我从管理帐户重新启动了 RAD Studio。所有项目都在列表中:控制台应用程序、Windows 应用程序、FireMonkey 应用程序。然后我再次从非管理帐户重新启动。并且没有项目了。

我在网上搜索了这个问题,当从非管理帐户登录时,它似乎没有从对象存储库加载项目。但原因是什么?我为所有用户在“环境变量”的每个文件夹中提供了完全的读/写访问权限。

empty_object_repository

0 投票
0 回答
157 浏览

package - C++ Builder 2010。无法加载包。找不到模块

我刚刚安装了 Builder C++ 2010。我一直在 Windows 7 中使用它,但我已经升级到 Windows 10,现在我遇到了 BPL 问题:我打开了一个项目,其中包含我创建的一些组件,我通常在 Windows 7 中使用,当我右键单击并单击“安装”时,它会正确编译和链接,但随后会出现一个对话框,显示“无法加载包 C:\Users\Public\Documents\RAD Studio\7.0\BPL \XXX.bpl。找不到指定的模块”

我查看了那个文件夹并且 bpl 在那里。我确保我的用户已经被分配了对文件夹和 bpl 的完全控制权。该文件夹位于系统路径中。

我试图直接从组件/安装包/添加菜单栏执行此操作,但同样的事情发生了,尽管它有时会说“整数溢出”。

恐怕这与 Windows 10 的限制有关。有人可以帮帮我吗?提前致谢!

何塞。

使用 www.DeepL.com/Translator 翻译(免费版)

0 投票
2 回答
967 浏览

delphi - Delphi FreeAndNil:寻找替代实现

注意:请耐心等待,由于此处和此处的一些讨论以及在此处此处报告的一些问题,我感到有点“火上浇油”

一些背景

Ye olde(10.4 之前)FreeAndNil看起来像这样:

新的和新鲜的FreeAndNil样子是这样的:

IMO 都有其缺点:

  • 旧的不做任何类型检查,所以调用FreeAndNil指针、记录和接口编译得很好,但在运行时会产生有趣但通常不需要的效果。(完全发疯,或者如果幸运的话,它会因 EAccessViolation、EInvalidOperation 等而停止。)
  • 新的接受一个 const 参数,因此接受任何对象。但是随后提供的对象指针实际上是使用一些hacky-wacky 代码更改的。
  • 你现在可以FreeAndNil像这样调用 new:FreeAndNil(TObject.Create)它会编译甚至运行得很好。我喜欢在FreeAndNil我出错时警告我并提供例如属性而不是字段的旧版本。FreeAndNil如果您为此实现提供对象类型属性,不确定会发生什么。没试过。

如果我们将签名更改为FreeAndNil(var SomeObject:TObject)then 它将不允许我们传递任何其他变量类型,然后正是该TObject类型。这也是有道理的,就好像它不是一样,人们可以轻松地更改例程中FreeAndNil作为类型提供的变量,将 var 变量更改为完全不同类型的对象,例如. 当然不会做这样的事情,因为它总是将 var 参数更改为 nil。TComponentTCollectionFreeAndNil

所以这是FreeAndNil一个特殊情况。 也许甚至足以说服delphi添加编译器魔术 FreeAndNil实现?投票给任何人?

潜在的解决方法

我想出了下面的代码作为替代方案(这里作为辅助方法,但也可以作为实现的一部分TObject),它结合了两个世界。这Assert将有助于在运行时查找无效调用。

用法将是这样的:

我已经实际测试过这个例程,它甚至比 10.4 的FreeAndNil实现要快一些。我猜是因为我先做作业检查,然后Destroy直接打电话。我不太喜欢的是:

  • 类型检查在运行时进行,并且仅在断言为 ON 时进行。
  • 感觉就像必须两次传递相同的变量。这不一定是正确的/必需的。它必须是同一个对象,并且参数必须是变量。

另一项调查

但是如果一个人可以在没有参数的情况下调用,那不是很好吗

所以我弄乱了self指针,并设法将其设置为nil使用 10.4 在其FreeAndNil. 嗯......这在方法内部有效,self指向nil. 但是在FreeAndNil这样调用之后,MyObj 变量不是 nil,而是一个过时的指针。(这是我所期望的。)此外,MyObj可以是属性或(的结果)例程、构造函数等。

所以这里也不行……

最后是问题:

您能想出一个更清洁/更好的解决方案或技巧吗:

  • FreeAndNil(var aObject:TObject) 具有不那么严格的类型检查编译时间(可能是编译器指令?),因此它允许编译和调用任何对象类型的变量。
  • 当传递的东西不是某个对象类型的变量/字段时,抱怨编译时间
  • 帮助描述RSP-29716中的最佳解决方案/要求是什么
0 投票
1 回答
134 浏览

c++ - 如何在 C++ Builder 下调试外部进程?

我有一个用 C++ Builder 编写的 DLL。DLL 是使用“调试信息”构建的。
我无法从 IDE 运行和调试此 DLL,因为它作为插件在另一个进程(主 exe)中动态加载。我的 DLL 需要先复制到主 exe 的文件夹中。

因此,我将 IDE 附加到该过程,但我不知道从这里做什么。

我知道,如果我在主进程中单击一个按钮来加载和使用我的 DLL,则会引发 AV,并且会显示一条自定义消息,其中包含一些关于错误的小信息。当 AV 被提升时,调试器不会介入。错误可能在更高级别被捕获。

如果我还可以附加我的 DLL 的源代码并在其中放置一个断点,那就太好了。

我如何获得有关该 AV(其起源)的更多信息?
(基本上,那些进行此类调试的人提供的任何提示都会非常有帮助)。

0 投票
1 回答
682 浏览

delphi - 使用 Delphi 捕获 HTML POST?

我想获得我用 Delphi 以 HTML 格式发送的 post 值。我正在使用TIdHTTPServer.

我的目标是获取 POST 发送的数据。但有一个问题。我使用如下图所示的工具将其作为“表单数据”发送。捕获 POST 请求。

图片

不幸的是,当我发出与HTML相同的请求时,它看不到 POST。我如何实现这一目标?

HTML POST 请求(Delphi 没有看到该请求。我的目标是实现这个愿望。)

0 投票
1 回答
371 浏览

delphi - Delphi Version number central but other info decentral

Background

Upto RS10.3 I used to use Andreas Hausladen DDevExtensions to set my version number in my project sources to be the same for all modules (bpl's/exe), but unfortunately Andreas has stopped updating his tool for RS10.4 and later.

So I am looking for more comfortable ways to set a version number in my app modules than applying multi-file changes to all dproj files with NotePad++.

But... On the other side I do want to keep specific information (like file description etc) specific to the module file.

What I also would like but isnt really a requirement is to have my (c) notice, and other shared info to be centralized in a single file (preferably .rc) as well.

It is not a problem to drop the version info from the dproj files (which are a pain to maintain anyway) and have a specific .rc file for each module instead.

Another advantage would be that having one central version number and (c) file is also a lot better in svn change management since I don't have to commit each and every .dproj file because of the version/build number change.

Investigation

(To be updated as we go along) I Checked out

But those solutions are not really what I am looking for; I am not looking for scripts but a source file/project file way to accomplish my task.

So here's the Q

How can I have one single .rc file containing my version number and use it in other .rc files containing specific version info