问题标签 [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.
xml - Delphi XML 订单
我在 Rad Studio 2007 的 Delphi 项目中创建具有正确复杂类型和元素顺序的 XML 时遇到问题。我已经从 XSD 自动生成了一个接口类。但与 C# 相比,例如我无法为元素设置顺序。当我创建 XML 文档时,复杂类型/元素按照它们从代码中设置的顺序进行设置。这给了我一个不正确的 XML,因为另一方强制 XSD 顺序。
有没有办法使用 Delphi XML IXMLDocument/IXMLNode/IXMLNodeCollection 类或在接口类中强制在 Delphi 中创建 XML 的顺序?还是必须手动完成?
android - Firemonkey TSpinBox 高度
我正在使用 C++ Builder 10.3,我的应用程序适用于 Android,请注意我对 C++ Builder 非常陌生
我正在尝试更改 TSpinBox 的字体大小和高度,但我无法更改高度。
我尽最大努力移植以下 Delphi 解决方案
Firemonkey TEdit 高度,但没有任何乐趣,我完全输了。AdjustFixedSize 被宣布为私有我不认为它被覆盖,我也尝试创建一个设置器并调用它,但我再次无法让它工作。我遇到的最大问题是我缺乏 C++ Builder 知识。
标题
CPP
代码
delphi - 如何检查表单是否在 Delphi 中关闭?
调用后:
我怎么知道这个表单是真的关闭了还是已经在FormCloseQuery中使用CanClose:=false取消了?
更新:
为了更好地解释:MainForm可以关闭一个名为Form1的子窗体。所以,我的问题是当MainForm调用Form1.Close()时,MainForm怎么知道 Form1 已经真正关闭并且没有从它的FormCloseQuery 中取消?
如果Form1关闭,则将其销毁。有没有办法在调用Close()后查看Form1是否已被销毁?
delphi - RAD Studio 10.3 中的空对象存储库列表
几天前,我在我的系统 Windows 10 Pro 64bit 上安装了新版本的 RAD Studio 10.3。它需要以管理员权限登录,我做到了。然后我从非管理帐户启动 RAD Studio,当 IDE 启动时,我单击“文件 - 新建”,对象存储库中的所有默认项目都丢失了。没有“控制台应用程序”或“Windows 应用程序”之类的项目。只有文件夹“Other - Unit Test”,包含三个项目:“代码模板”、“项目组”、“文本文件”。
然后我从管理帐户重新启动了 RAD Studio。所有项目都在列表中:控制台应用程序、Windows 应用程序、FireMonkey 应用程序。然后我再次从非管理帐户重新启动。并且没有项目了。
我在网上搜索了这个问题,当从非管理帐户登录时,它似乎没有从对象存储库加载项目。但原因是什么?我为所有用户在“环境变量”的每个文件夹中提供了完全的读/写访问权限。
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 翻译(免费版)
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。TComponent
TCollection
FreeAndNil
所以这是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中的最佳解决方案/要求是什么
c++ - 如何在 C++ Builder 下调试外部进程?
我有一个用 C++ Builder 编写的 DLL。DLL 是使用“调试信息”构建的。
我无法从 IDE 运行和调试此 DLL,因为它作为插件在另一个进程(主 exe)中动态加载。我的 DLL 需要先复制到主 exe 的文件夹中。
因此,我将 IDE 附加到该过程,但我不知道从这里做什么。
我知道,如果我在主进程中单击一个按钮来加载和使用我的 DLL,则会引发 AV,并且会显示一条自定义消息,其中包含一些关于错误的小信息。当 AV 被提升时,调试器不会介入。错误可能在更高级别被捕获。
如果我还可以附加我的 DLL 的源代码并在其中放置一个断点,那就太好了。
我如何获得有关该 AV(其起源)的更多信息?
(基本上,那些进行此类调试的人提供的任何提示都会非常有帮助)。
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
- How to include Subversion revision number into Delphi project
- Incrementing Delphi XE project version number from command line
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