问题标签 [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.
android - 使用 TObject 后代调用 std::vector::push_back 时 C++ Builder bccarm 错误
我有一些简单的 C++ 代码,不会由 C++ Builder 10.1 Berlin 的基于 Clang 的 C++11 编译器 bccaarm 编译。
这是代码:
这是错误:
[bccaarm 错误] stl_iterator.h(963):对类型“value_type”(又名“系统:classes::TComponent * __strong”)的右值引用不能绑定到“__borland_class * isTObj __strong”类型的左值(又名“系统: :Classes::TComponent * __strong')
编译器在文件 stl_iterator.h 的第 963 行停止:
其他 C++ 编译器 bcc32 和 bcc32c(也基于 Clang)对此代码没有问题。
当Comp
不是来自类型TComponent
或代码的另一个后代时TObject
,编译没有任何问题。
我不知道这段代码有什么问题以及为什么 R 和 L 值有问题......
有人知道在这里做什么吗?
c++ - TStyledPresentationProxy 的后代尚未注册类
我有一个继承自TGrid
被调用的自定义网格控件TFmGrid
。此控件在 Rad Studio 10 Seattle Update One 中运行良好。TFmGrid
我最近升级到 10.1 Berlin 并开始注意到在我运行应用程序和设计器时在我的控件上显示此错误消息:
尚未为类 TFmGrid 注册 TStyledPresentationProxy 的后代。也许有必要将 FMX.Grid.Style 模块添加到使用部分
下图显示了错误消息如何显示在我的网格控件上:
我首先按照消息的建议进行操作,然后添加#include <FMX.Grid.Style.hpp>
到我的TFmGrid
控件的头文件中,但这似乎什么也没做。
因此,就尝试注册后裔而言,TStyledPresentationProxy
我不确定从哪里开始。我找到了有关以下方法的文档:
尝试使用指定名称或控件类和控件类型的指定组合注册表示代理类。
所以我假设我需要使用这个方法或至少类似的东西,但我不明白我应该如何调用这个方法。
但随之而来的问题是我在哪里调用这段代码?
我的自定义控件在其命名空间中有一个名为的方法Register()
,我相信它是在创建控件时由 IDE 自动生成的:
我需要在那里打电话登记一个后裔TStyledPresentationProxy
吗?解决这个问题的正确方法是什么?
c++ - Direct2D 未在 C++Builder 中链接整个库
我在 Embarcadero RAD Studio 10.1 Berlin 有一个 C++ 项目。该项目设置为使用 Direct2D。画布绘图在课堂上效果很好TDirect2DCanvas
。一切都顺利渲染。但是,我需要使用渲染目标。尝试执行此操作时出现链接错误。例如,当我尝试这个时:
我收到以下链接错误:
如果我只包含标题,我认为 C++Builder 应该已经设置为链接到 Direct2D。谁能帮我链接到相应的文件?
c++builder - 创建样式化的 VCL 组件
我正在尝试在 C++ Builder 10.1 Berlin 中创建一个自定义 VCL 组件,该组件TGraphicControl
源自TProgressBar
.
我希望它使用Windows 主题系统自行绘制。为了做到这一点,我已经包含Vcl.Themes.hpp
在我的源代码中,并覆盖了虚拟Paint()
方法来调用该TCustomStyleServices::DrawElement
方法。
问题是64 位链接器抱怨Vcl::Themes::TCustomStyleServices::DrawElement
无法解决。
我如何满足链接器?
c++ - 链接 boost::locale 与 Embarcadero Berlin 10.1
我在 Embarcadero Berlin 10.1 中创建了一个简单的控制台应用程序,选择了 32 位 clang 编译器,并从boost 文档中的此处复制了一些代码。
这是完整的代码
但我得到一些链接器错误:
前两个我可以通过手动将 libboost_locale-bcb32c-MT-SD-1_55.lib 添加到项目中来修复,这是我对 boost 的理解和经验,它不应该真的需要手动链接,但我不介意这一点。然而,最后4个,我完全不确定。它看起来与语言环境后端有关(它不是 ICU 与 Embarcadero 提供的提升吗?)
有人有建议吗?
delphi - 使用扩展参数调用 Delphi 函数时出现 C++ 错误
在一个新的 Win32 项目中,我有以下 Delphi 函数:
在同一个项目中,但来自 C++ 单元,我调用此函数:
当我value1
使用 BCC32C (CLang) 编译时检查时,我得到 1.68132090507504896E-4932,这是不正确的。
用 BCC32(经典)编译,我得到 10。
在这两种情况下,第二个参数都是 40。
似乎Extended
值和参数堆栈加载存在问题。
我使用 RAD Studio 10.1 Berlin。
我该如何解决这个问题?
更新
我没有包含声明,因为 hpp 是在编译时自动创建的。无论如何,声明是:
要复制项目:
1-在 Rad Studio 中创建一个 C++ 项目
2-用上面的SetValue函数添加一个Delphi单元
3-从 C++ 单元,使用 #include 添加 hpp 标头并调用 SetValue
这是全部。
我需要使用扩展类型。我正在使用外部 Delphi 库,因此无法更改类型。上面的代码是对问题的简化。实际上,问题在于调用该库的函数,该函数在参数中使用了 Extended。Extended 是 Delphi 中的本机类型,但在 C++ 中它映射为 long double,10 字节(对于 Win32)。
c++ - c++ builder上的Boost版本
我尝试将 boost 1.61 与 C++ Builder 10.1 Berlin 一起使用,方法是用 boost 1.61 替换默认的 boost 版本 (1.55) 但这不起作用,我如何在 c++ builder 上使用更新的 boost 版本
c++builder - 将 LiveBindingsDesigner 与 TFDMemTable 一起使用时,带有 TImageObjectAppearance 的 TListView DynamicAppearance 将不会查看图像
我欢迎 Embarcaderos 努力使 TListView 更加动态化,并且很高兴看到 Sarina Duponts 的帖子在这里您可以将 imageindex 链接到 LiveBindings Designer 中的 TListView 属性,甚至在使用 DynamicAppearance 时将 image 属性链接到数据字段(整数)和TImageObject 外观。
但是……我试过了,而且几乎成功了。
在我的挑战中,我有一个应用程序,我使用带有 TREST* 函数的 TFDMemTable 来填充 TFDMemTable。如果我不使用 DynamicAppearance 并使用 ImageListItem 并使用 LiveBindings Designer 将我想要使用的数据字段链接到 TListView 中的 imageindex 属性,那么一切都很好。
尽管使用 DynamicApperance,没有可链接的 imageindex 属性,但 Sarina Dupont 在此处的帖子中说,您可以将整数字段直接链接到 image 属性(IDE/编译器会弄清楚)。
嗯......我想出了以下几点:我的数据字段(从 TREST* 和 TFDMemTable 生成)不一定是它们看起来的样子。由于我使用的是 REST/JSON,因此字段类型被“匿名化”为 WideString,实际上 FieldDefs->'dataitem'->DataType 设置为“ftWideString”。我试图将此值更改为 ftInteger,希望这会有所帮助,但我确实收到了以下错误消息:“FDMemtTable1:'datafield' 的字段类型不匹配,预期:WideString 实际:整数”。
所以...我快到了,我真的很想使用 DynamicAppearance 并查看每个 TListViewItem 的多个图像和文本字段...
...或者更容易动态地制作 ListViewItem 'Template' 并用数据填充它,最好的方法是什么?
delphi - 有没有办法将此delphi代码转换为c++builder
在大多数情况下,我能够将 Delphi 转换为 C++,但这让我有些头疼。也许你们中的一些人可以提供帮助。
如这里链接所示,它引用了 Embarcadero (FMX) 中 TListView 上的一些新功能。因为我对 C++ 比对 Delphi 更舒服,所以我使用 C++Builder。在大多数情况下,这很容易翻译和理解,并找到解决方法。但在这里我被困住了:
我正在努力的部分是
这是如何翻译的,或者这个功能在 c++ 中根本不存在?