问题标签 [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.
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 认为的重复。
json - 使用哪种 JSON 方法更好:Get() 或 GetValue()?
鉴于以下两行代码产生相同的输出,这两种方法中哪一种更好?
json - TJSONObject 中的日期格式
我正在TFDMemTable
通过SaveToStream()
. 然后我TJSONObject::ParseJSONValue()
用来获取 JSON 对象。经过一些解析后,我通过 . 返回字符串格式的 JSON ToString()
。
在整个过程中,日期保持在表单中,20180329T013152
而不是2018-03-29T01:31:52
. 我正在寻找是否可以设置任何选项。TJsonOptions
似乎接近我正在寻找的东西,但似乎只与ObjectToJsonString()
.
有谁知道任何这样的选项,还是我必须按日期/时间字段进行此转换?
c++ - C++ Builder nullptr 关键字“未定义”
在 C++ Builder (Berlin) 中,编辑器的语法高亮显示nullptr
为保留字。但是在编译时出现错误:
nullptr
已添加到 C++11 标准中,据我所知,C++ Builder Berlin 支持 C++11。我一直在浏览 C++ 编译器选项,但找不到与选择要使用的 C++ 标准相关的任何内容。
C++ Builder Berlin不nullptr
支持并且荧光笔只是错误?或者我可以在某处打开 C++11 支持吗?
c++builder - OpenDialog 在 Win10 上总是返回 false
我有一个使用 C++Builder 10.1.2 构建的 32 位应用程序。它有一个TFileOpenDialog
组件。在 Windows 7 下,它运行良好,但在 Windows 10 上运行时,无论是从文件浏览器还是调试器,它的Execute()
方法总是返回false
.
TFileOpenDialog
是一个 Vista 组件,所以我将它替换为TOpenDialog
,它的Execute()
方法也总是返回false
。
我知道这是一个长镜头,但我们会错过什么?
tpanel - 我必须设置什么以便标签文本将自动换行到父面板的宽度?
我正在使用 C++ 生成器。
我创建了一个面板并将所述面板的宽度设置为 350。
我正在使用以下代码来创建标签。
结果是tempLabel2
和tempLabel3
正在扩展的标题超过了包含面板的 350 宽度。我在网上阅读了有关设置AutoSize
为真和WordWrap
真的信息。这次尝试没有成功。
我必须设置什么以便标签文本将自动换行到父面板的宽度?
sqlite - 将数据库值设置为 NULL
我有一个用于显示日期的 SQLite 双字段。该字段没有默认值。当没有输入日期时,我需要将字段值设为 NULL,因为当字段显示为日期时,它会显示“12/30/1899”。出于某种原因,我无法将该字段设置为 NULL。我正在使用 C++ Berlin 10.1。这是代码:
运行此代码后,"FDQuery1->FieldByName("DateLeft")->Value" 仍然为 0。
如何将值设置为 NULL?
c++builder - 如何创建和使用 TParameters?
我正在尝试创建和使用TParameters
但遇到访问冲突,因为该AddParameter()
方法返回 NULL。
这是我到目前为止的地方。这是 RAD Studio 10.1 Berlin。
的值为Param
NULL。
c++builder - DLL 中的 EOutOfResources
我将几个 DLL 和一个应用程序从 Embarcadero C++ Builder XE 迁移到 C++ Builder 10.1 Berlin。
现在,当我的 DLL(包含表单)被应用程序加载时,我得到
在 TApplication::CreateHandle
经过几个小时的搜索,我发现没有人有同样的错误,甚至没有英文翻译。我会将其翻译为“指定的父元素不是'%s' 的父元素”。
我的堆栈跟踪:
当我在我的 DLL 代码中设置断点时,没有触发任何断点,所以我不确定为什么甚至调用 TApplication 构造函数(我的代码中有一个,但似乎没有被调用)。
我怀疑依赖项有一些问题,所以我使用了依赖项walker,它找到了两个 64 位 dll。不确定这是否是误报:
我能做些什么来进一步解决或诊断这个问题?
c++builder - 如何在 Embarcadero C++ Builder 10.1 的调试会话期间恢复执行?
在 Embarcadero C++ Builder 10.1 中的调试会话期间,由于断点而停止后,如何恢复程序的执行?
我经常有这样的情况,我想恢复直到断点再次被击中,但我没有看到一个选项?单击运行似乎运行一个新的程序实例。我看到的唯一其他选项是单步执行代码。