问题标签 [c++builder-10.1-berlin]

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 回答
183 浏览

c++ - 将 Lua 表连接到没有第三方库/源的 C++ 类

这不是重复的,请阅读全文!

我不确定标题是否正确,但我会在这里更详细地解释。

我有一个带有一些函数、变量和属性的 C++ 类(C++ Builder)。在 Lua 中,我有一个反映变量和属性的简化表。

例子:

当我创建类 foo 的实例时,我创建了一个相应的表并将其推送到 lua 全局环境中。我将有一个包含所有实例的全局 Lua 表,但为了简化示例,我们暂时跳过全局表并专注于单个实例。foo 实例的 Lua 表示:

现在是手头的“问题”。在 Lua 中, foo 表只是 C++ 类实例的代理,所以当我在 Lua 中这样做时......

... foo 的 C++ 类实例将设置其变量标题。反过来(Lua)也是如此......

打印(foo.x)

...将打印类实例 foo 的变量 x 的值。

我整天都在谷歌上搜索,大多数示例都使用其他库和包装器,而没有解释其背后的机制。

我知道我需要使用元表和 lightuserdata 但这是否意味着我必须为每个变量定义 getter/setter 并使用 foo.GetX 和 foo.SetCaption 来访问它们?那将是很多getter/setter。

有人可以解释如何在不使用第三方库/源的情况下在 C++/Lua 之间建立这种连接吗?

编辑:更新标题并明确表明这不是@Sombrero Chicken 认为的重复。

0 投票
1 回答
119 浏览

json - 使用哪种 JSON 方法更好:Get() 或 GetValue()?

鉴于以下两行代码产生相同的输出,这两种方法中哪一种更好?

0 投票
1 回答
142 浏览

json - TJSONObject 中的日期格式

我正在TFDMemTable通过SaveToStream(). 然后我TJSONObject::ParseJSONValue()用来获取 JSON 对象。经过一些解析后,我通过 . 返回字符串格式的 JSON ToString()

在整个过程中,日期保持在表单中,20180329T013152而不是2018-03-29T01:31:52. 我正在寻找是否可以设置任何选项。TJsonOptions似乎接近我正在寻找的东西,但似乎只与ObjectToJsonString().

有谁知道任何这样的选项,还是我必须按日期/时间字段进行此转换?

0 投票
1 回答
1026 浏览

c++ - C++ Builder nullptr 关键字“未定义”

在 C++ Builder (Berlin) 中,编辑器的语法高亮显示nullptr为保留字。但是在编译时出现错误:

nullptr已添加到 C++11 标准中,据我所知,C++ Builder Berlin 支持 C++11。我一直在浏览 C++ 编译器选项,但找不到与选择要使用的 C++ 标准相关的任何内容。

C++ Builder Berlin不nullptr支持并且荧光笔只是错误?或者我可以在某处打开 C++11 支持吗?

0 投票
0 回答
111 浏览

c++builder - OpenDialog 在 Win10 上总是返回 false

我有一个使用 C++Builder 10.1.2 构建的 32 位应用程序。它有一个TFileOpenDialog组件。在 Windows 7 下,它运行良好,但在 Windows 10 上运行时,无论是从文件浏览器还是调试器,它的Execute()方法总是返回false.

TFileOpenDialog是一个 Vista 组件,所以我将它替换为TOpenDialog,它的Execute()方法也总是返回false

我知道这是一个长镜头,但我们会错过什么?

0 投票
0 回答
150 浏览

tpanel - 我必须设置什么以便标签文本将自动换行到父面板的宽度?

我正在使用 C++ 生成器。

我创建了一个面板并将所述面板的宽度设置为 350。

我正在使用以下代码来创建标签。

结果是tempLabel2tempLabel3正在扩展的标题超过了包含面板的 350 宽度。我在网上阅读了有关设置AutoSize为真和WordWrap真的信息。这次尝试没有成功。

我必须设置什么以便标签文本将自动换行到父面板的宽度?

0 投票
1 回答
765 浏览

sqlite - 将数据库值设置为 NULL

我有一个用于显示日期的 SQLite 双字段。该字段没有默认值。当没有输入日期时,我需要将字段值设为 NULL,因为当字段显示为日期时,它会显示“12/30/1899”。出于某种原因,我无法将该字段设置为 NULL。我正在使用 C++ Berlin 10.1。这是代码:

运行此代码后,"FDQuery1->FieldByName("DateLeft")->Value" 仍然为 0。

如何将值设置为 NULL?

0 投票
0 回答
100 浏览

c++builder - 如何创建和使用 TParameters?

我正在尝试创建和使用TParameters但遇到访问冲突,因为该AddParameter()方法返回 NULL。

这是我到目前为止的地方。这是 RAD Studio 10.1 Berlin。

的值为ParamNULL。

0 投票
1 回答
63 浏览

c++builder - DLL 中的 EOutOfResources

我将几个 DLL 和一个应用程序从 Embarcadero C++ Builder XE 迁移到 C++ Builder 10.1 Berlin。

现在,当我的 DLL(包含表单)被应用程序加载时,我得到

在 TApplication::CreateHandle

经过几个小时的搜索,我发现没有人有同样的错误,甚至没有英文翻译。我会将其翻译为“指定的父元素不是'%s' 的父元素”。

我的堆栈跟踪:

堆栈跟踪

当我在我的 DLL 代码中设置断点时,没有触发任何断点,所以我不确定为什么甚至调用 TApplication 构造函数(我的代码中有一个,但似乎没有被调用)。

我怀疑依赖项有一些问题,所以我使用了依赖项walker,它找到了两个 64 位 dll。不确定这是否是误报:

依赖步行器输出

我能做些什么来进一步解决或诊断这个问题?

0 投票
0 回答
99 浏览

c++builder - 如何在 Embarcadero C++ Builder 10.1 的调试会话期间恢复执行?

在 Embarcadero C++ Builder 10.1 中的调试会话期间,由于断点而停止后,如何恢复程序的执行?

我经常有这样的情况,我想恢复直到断点再次被击中,但我没有看到一个选项?单击运行似乎运行一个新的程序实例。我看到的唯一其他选项是单步执行代码。