问题标签 [c++builder-xe8]

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 投票
1 回答
1432 浏览

c++ - 删除 Firemonkey TListView 中的项目导致超出范围异常

我有TListView几个项目,其中每个项目都有一个相应的“删除”按钮。具有以下TListView按钮单击事件处理程序:

当我尝试删除一个项目时,会引发“参数超出范围”异常。但是,它不在Delete通话中,而是在System.Generics.Collections此处:

我是否不正确地从我的列表视图中删除了一个项目?还是有其他原因导致此问题?

0 投票
2 回答
4053 浏览

c++ - C++ Builder XE8 上的 TEdit 输入验证

我对 C++ Builder XE8 很陌生。

我希望必须输入的数字的最小和最大长度为六个数字,我还需要确保只输入数字(0 是例外),而不是字母字符、退格符、标点符号等。

如果输入的不是数字,我还想生成一个错误框。

我尝试了一些代码组合,其中三个可以在下面看到,但这些代码都不起作用。

任何帮助都将不胜感激!

(1)。

(2)。

(3)。

0 投票
1 回答
224 浏览

c++ - 在 firemonkey 中评估画布渲染的视频卡性能

最近,我的团队开始注意到我们当前的 C++ 构建器项目在不同的计算机上奇怪地运行的问题。我们已将其范围缩小到我们正在运行应用程序并将其GlobalUseGPUCanvas设置为的事实true。据我了解,这意味着 firemonkey 将使用 GPU 来渲染画布。我们注意到有问题的机器是那些集成显卡功能较弱的机器。因此,我希望编写一些逻辑,这些逻辑只会使GlobalUseGPUCanvas用户拥有足够强大的显卡。

为此,我编写了以下代码,这些代码大量基于此 MSDN 文章。这使我可以遍历机器上的所有视频卡,看看它们有多少内存。

这是一个不错的开始,因为我可以检查计算机的显卡,看看它们是否有足够的内存来运行显卡上的程序。但是,我不确定如何处理机器可能具有非常好的专用显卡但可以启用内部显卡的情况。例如,我可以看到功能强大的专用卡并认为它们有足够的内存,但如果它们出于某种原因运行了功能较弱的集成显卡,我可能会弄错。

无论如何,是否能够分辨出我正在枚举的这些显卡中的哪一个是活动图形设备?

0 投票
0 回答
1643 浏览

c++ - 在 Embarcadero C++ Builder 中使用静态和动态库

我有一个 iOS 静态库(.a 和 .h 文件),想知道如何将它实现到 C++ Builder 项目中。该文档详细介绍了如何导入 Java 库,但根本没有涉及第三方 iOS 库。Embarcadero 也没有任何关于这样做的博客文章或视频。

我找到的最接近的帖子是:

使用 Delphi XE5 检查移动设备上的 Internet 连接

但是,不清楚如何在 .a 文件中链接,然后如何访问 ObjC .h 文件中的接口。

任何帮助将不胜感激,并将与 Embarcadero 社区分享完成的版本,以便他们最终希望记录如何执行此操作。

0 投票
1 回答
1997 浏览

c++ - Using getenv() to read environment variable returns NULL C++

I am attempting to read an environment variable in C++ as per this documentation. My code looks like this:

My problem is that val always ends up NULL as if the enviroment variable does not exist. However, I clearly have the variable defined as you can see here:

enter image description here

What am I doing wrong here?

0 投票
1 回答
184 浏览

c++ - Firemonkey:设置 TLabel 文本导致字符串索引超出范围异常

我有一个方法可以构建帮助消息,然后将TLabel's text 属性设置为该帮助消息。但是,每当我尝试设置标签的文本时,都会出现以下异常:

'String index out of range. (-1) Must be >=0 and <=42'

方法如下:

我添加了一个ShowMessage调用只是为了检查我的字符串的值。它显示得很好。我还可以将标签设置为任意值,例如:

HelpLabel->Text = "This message works!";

HelpMsg我在构建字符串 时做错了什么吗?

编辑:注释掉将 \n 添加到字符串的行可以解决问题。同样,以下代码将引发异常:

引起问题的 \n 是什么?如何正确添加新行?

0 投票
1 回答
677 浏览

clang - 'No matching constructor for initialization' Rad Studio 10 Clang Compiler

I have a snippet of code which compiles in C++ Builder XE8 using the classic BCC compiler. However, in Rad Studio 10 Seattle using the Clang compiler I get the error

'no matching constructor found for initialization of TChoiceItem'

Here is the snippet of code which causes the error.

Here is the code which defines TChoiceItem

I am fairly new to C++ so I am not exactly sure what to call the above method of defining a class/method.

Is this some sort of dated language feature not supported by the Clang compiler? Is there a way to modify the code or definition so the compiler will accept it?

Edit:

I found the actual declaration of the TChoiceItem class.

It does't appear to have any sort of standard constructor at all. But somehow, everything still compiles and works with the classic BCC compiler.

Edit 2:

I found this question which looks to be describing a similar issue. Could it be that I need to include some kind of compiler flag when compiling the code? If so can I add a flag somehow in the embarcadero project compiler settings?

0 投票
1 回答
131 浏览

c++builder - C++ Builder XE8 应用程序之间的快速通信

首先,我是 C++ Builder 中这种开发的新手,所以我正在寻找在 C++ Builder XE8 中完成任务的最佳方法。基本上,我将有一个 firemonkey GUI 应用程序将更新推送到 sqlite 数据库(请告知是否有更好的选择)和另一个 firemonkey 应用程序(基本上是一个后台服务),它将在它和一些定制硬件之间进行交互. 所以,我的问题是,什么是最快、最“实时”的方式来传达数据库已更新。事件处理程序?我不想使用每 100 毫秒刷新一次实时绑定的计时器,因为这似乎很昂贵。请记住,这将在 Android、iOS 和 Windows 设备上运行。其中一些可能动力不足。

我现在的想法是原始应用程序将根据需要将更新推送到 sqlite 数据库,这只是磁盘上的一个文件。接口的 firemonkey 应用程序需要知道这些更新何时通过事件侦听器发生,或者从我所读到的这些 RTL 消息是多平台的。这个想法是用最少的内存占用实现最快的通信。我还不确定我们是如何处理硬件的,但现在,我只需要将 A 点带到 B 点,稍后我会担心 C 点(硬件)。因此,任何有关使接口应用程序侦听来自原始 GUI 应用程序的数据库更新的建议都会很棒。我还阅读了他们的文件侦听器,您可以检查文件是否已更新?

0 投票
1 回答
1196 浏览

c++ - 在没有 Midas.dll C++ 的情况下部署项目

我正在努力做到这一点,以便我可以将使用 Midas.dll 的 firemonkey 项目部署到另一台机器上,而无需复制 DLL。 本文解释了如何通过在你的 uses 子句中包含 MidasLib 来使用 delphi 项目执行此操作,如下所示:

我对 delphi 不是很熟悉,但我假设在 C++ 中我想在#include语句的位置使用uses语句。由于 MidasLib 是一个 .pas 文件,我假设我应该包含Midas.hpp. 但是,即使我包含Midas.hpp在使用它的文件中,我仍然会收到一个异常提示“未找到 Midas.dll”。

如何部署我的项目而无需复制 Midas.dll 文件?

0 投票
1 回答
972 浏览

c++ - Firemonkey:获取父级控制形式

我有一个自定义控件,它需要访问它所在的主窗体的高度。由于此控件通常嵌套在一系列面板中,因此我编写了这段代码来尝试让我进入主窗体:

使用该ShowMessage语句跟踪我的进度,当我逐步执行代码时,我一直到“BasePanel”,在这种情况下,它是“MainForm”之前的最后一个控制。但是,当调用ShowMessage应该是“MainForm”时,我会遇到访问冲突。

是否有某种原因我无法以这种方式访问​​控件的主要形式?有没有更好的方法来访问控件的主窗体?