问题标签 [c++builder-10.2-tokyo]

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

json - 如何在 C++ 中使用 RTTI 设置私有动态数组元素

这是对此处发布的答案的后续问题:

https://stackoverflow.com/a/55588208/2918172

它有一个解决方法,用于解决在调用方法时私有字段未刷新的TJsonTextReader代码中的错误。在 System.JSON.Readers.hpp 中定义如下:FCharsRewindFChars

我的问题是如何在 C++Builder 中实现相同的功能(使用 clang 编译器)。我以前没有使用过RTTI。这是我到目前为止所拥有的:

如何FChars用空字符替换 的第一个元素?

0 投票
0 回答
82 浏览

c++builder - FastMM_FullDebugMode 库源代码(dpk)

我正在使用 RAD Studio 10.2.3。

我正在尝试使用 FastMM4 在我的 C++Builder 64 位应用程序中查找内存泄漏。

所以我下载了 FastMM4。我有最新版本 4.993。

问题是代码的某些部分有点过时,需要调整。

例如,我需要重新编译FastMM_FullDebugMode.dll. 这个没问题,因为包含了源代码。

问题是 DLL 与.lib文件一起工作,不幸的是,该文件适用于 32 位应用程序。

无论如何我都试过了,但我收到以下错误消息:

[ilink64 错误] 致命:无效的目标文件 'FASTMM_FULLDEBUGMODE.LIB'

我很确定这是因为我需要一个 64 位库,即.a(不是.lib)。

所以,我试图找到FastMM_FullDebugMode.lib源代码来为 64 位应用程序重新编译。但我在 GitHub 上找不到。

有人知道我在哪里可以找到并下载该源代码吗?

我确认库文件问题已解决!但我遇到了另一个。我收到以下弹出错误消息:

“FastMM4 无法安装,因为内存已通过默认内存管理器分配。FastMM4.pas 必须是项目 dpr 文件中的第一个单元。”

我确信我遵循了所有步骤。在我的项目“Options > Build order”中,我将 FastMM4Messages,pas 首先放入,然后是文档中所写的 FastMM4.pas。我还添加了: USEOBJ("FastMM4BCB.cpp"); 在我的项目主文件中

那么,如何解决这个错误呢?


经过验证,我不得不得出结论,FastMM$ 不能与 C++ Builder 10.2 一起使用。我不知道它是否可以与以前版本的 C++ Builder 一起使用。我注意到一些在 FastMM4 中使用并且不能与 C++ Builder 一起使用的函数:

  1. IsMemoryManagerSet 在 C++ Builder 中始终为真 https://docwiki.embarcadero.com/Libraries/Tokyo/en/System.IsMemoryManagerSet

  2. GetHeapStatus 已弃用 https://docwiki.embarcadero.com/Libraries/Tokyo/en/System.GetHeapStatus

我试图用局部变量替换 IsMemoryManagerSet,用 GetMemoryManagerState 替换 GetHeapStatus,但这并没有解决问题。不能让 FastMM4 工作。

所以,最简单的解决方案:有人知道我可以在 C++ Builder 10.2.3 中使用的另一个免费内存泄漏检测应用程序吗?真正有效的东西?

0 投票
1 回答
46 浏览

c++builder - RAD Studio Tokyo,光标不断旋转

我正在使用 RAD Studio 10.2.3 Tokyo。

当我在 IDE 中编写(或用鼠标单击或按时,IDE 中的光标会不断旋转Backspace

这只发生在 C++Builder 中。我检查了Delphi,问题似乎没有发生。

有时,这种旋转会导致 RAD Studio 完全关闭!然后我有义务重新打开应用程序和我的所有文件!

这是一场噩梦!

我在 中检查了不同的选项Tools > Options > Editor Options,但无法弄清楚问题所在。

这在我编写代码时浪费了我很多时间。

有人知道是什么原因造成的吗?

0 投票
0 回答
21 浏览

c++builder - 我需要如何将 Windows SDK 集成到 C++Builder 10.2 中的现有项目中?

我有一个使用旧版 32 位 C++ 编译器的旧版 Windows 项目。由于各种原因,我需要使用 Windows 8+ 功能PathCchCanonicalizeEx。C++Builder 似乎为此提供了头文件和一些模块定义文件,但我找不到任何库。因此,我下载了 Windows 8.1 SDK 并按照文档说明在 C++Builder 中提供了它。虽然这些文档适用于较新版本,但在我的旧版本中情况非常相似。

成功安装并添加 SDK 后,我可以选择它作为 32 位 Windows 的目标,或者更可能将两者相互连接或类似的东西。虽然,链接我的应用程序仍然失败:

当然,我希望以某种神奇的方式使 SDK 可用,从而使包含的库可用于项目,但情况似乎并非如此。此外,我认识到,虽然 SDK 的一些二进制工具的路径是在 SDK 管理器中维护的,但似乎没有将 SDK 的任何 lib 路径添加到项目文件中的任何位置,甚至没有添加到全局 IDE 设置及其路径中。

这是预期的吗?

pathcch.lib从 SDK 手动添加必要的到项目中时,链接仍然失败,因为 lib 文件的格式不同:

所有添加的 SDK 不会发生这种情况吗?使用 SDK 管理器使 SDK 可用后,我在文档中找不到任何其他步骤,但显然事情根本无法以这种方式工作。甚至较新版本的 C++Builder 也使用 OMF,因为它们的旧版编译器/链接器或 ELF/ELF64,因为 CLANG/LLVM。

那么如何使用 COFF 使用库配置一些 MS SDK 呢?

我尝试使用coff2omf,当然;-)转换lib文件,但也失败了。此外,在我看来,强制 C++Builder 的所有用户手动转换单个库并且甚至在文档中都没有提及它是没有多大意义的。

那么,关于 SDK 以及如何集成它们,我在这里从根本上缺少什么?

0 投票
1 回答
25 浏览

c++builder - 如何在 C++Builder 10.2 中使用 PathCchCanonicalizeEx?

我有一个使用旧版 32 位 C++ 编译器的旧版 Windows 项目。由于各种原因,我需要使用 Windows 8+ 功能PathCchCanonicalizeEx。C++Builder 似乎为此提供了头文件和一些模块定义文件,但我找不到任何要链接的库:

我该如何解决这个问题?我需要添加Windows 8.1 SDK吗?必要的库是否只是以不同的方式命名而我找不到?完全不同的东西?

0 投票
0 回答
59 浏览

c++builder - Fade2D 库和 C++ 生成器

我希望在我的 C++Builder 项目中使用 Fade2D 库。

库在 MS Visual Studio 中,使用它们会引发异常:

我尝试了 Embarcadero 的两个工具来为 C++ Builder 构建 .lib 文件:

  • COFF2OMF 将 .lib 从 VS 格式转换为
  • IMPLIB 生成从 DLL 开始的 .lib 文件

在这两种情况下,我都有错误:

有什么建议么?提前致谢。

0 投票
1 回答
41 浏览

c++builder - 在 C++Builder 中创建导入库的 IMPLIB 和 MKEXP 有什么区别?

询问如何使用PathCchCanonicalizeExC++Builder 10.2 后,有人告诉我使用工具IMPLIBMKEXP. 我已经测试了这两个应用程序,它们正在基于KernelBase.dll我的 Windows 10 创建 lib 文件。虽然,这两个文件内容看起来不同,但它们以不同的标题开头,整体大小不同等MKEXP文件Creates an import archive from an input file,但似乎没有解释什么这实际上意味着。

那么,什么时候使用这两种工具中的哪一种呢?目的、它们如何工作、它们可能支持什么等有什么区别?