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

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

exception-handling - C++ Builder 5 中的 VCL 异常

我正在尝试控制代码中引发的异常,但是此示例在 C++ Builder 5 下无法正常工作。

为什么引发异常时永远不会到达 catch 块?

0 投票
2 回答
651 浏览

c++ - 无法访问打印机 Borland C++ 5

我最近从 Windows XP 32 位转移到 Windows 7 64 位。我无法访问 Borland C++ 5 IDE 中的任何打印机。这似乎是某种特权问题,因为如果我以管理员身份登录,问题就会消失。我有一个简单的单行程序来显示问题

PrintDialog1->执行()

对话框打开,但如果我按下属性按钮,没有任何反应。如果我尝试更改任何打印机属性,即页面方向等,我会收到一条消息,提示“所选打印机不支持操作”,然后是几个访问冲突。

这是奇怪的一点。如果我使用任何程序打印某些东西并打开打印机属性,问题就会在 IDE 中消失,并且直到我重新启动 IDE 才会出现。我已授予自己对所有打印机的完全访问权限,并且我对 Borland 安装到的目录 c:\borland 具有完全访问权限。

提前感谢您的帮助。

0 投票
2 回答
614 浏览

c++ - try __finally 块中可能的堆栈损坏

我正在处理的新模块中存在堆栈损坏问题,该模块是大型遗留项目的一部分。我的代码是使用 Borland C++Builder 5.0 用 C++ 编写的。

我已将问题跟踪到以下功能:

该函数在工作线程(从 TThread 派生)的上下文中调用。当数据可用时,另一个线程会用数据填充更改队列。更改队列受临界区对象保护。

运行代码时,我在尝试离开临界区时偶尔会遇到访问冲突。据我所知,有时当进入__finally部分时,堆栈已损坏。堆上的类实例很好,但指向类的指针(例如“this”指针)似乎无效。

如果我在更改队列为空的情况下删除返回调用,问题就会消失。此外,处理队列中项目的代码不是问题的根源,因为我可以将其注释掉,问题仍然存在。

所以我的问题是在 C++Builder 5 中使用__finally时是否存在已知问题?从try __finally块中调用return是否错误?如果是这样,为什么?

请注意,我意识到有不同/更好的方法来做我正在做的事情,我正在重构。但是,我不明白为什么这些代码会导致堆栈损坏。

0 投票
0 回答
123 浏览

c++ - CryptDecrypt 结果是 Windows 8 上的 NULL 表,在 Windows 7 上不是

我正在尝试使用 CryptApi 函数 CryptDecrypt 解密 RSA 加密字符串。代码适用于 Windows 7 64,但在 Windows 8.1 64 上,解密缓冲区中的 CryptDecrypt 返回 \0 字符表。没有错误,CryptDecrypt 不返回 0,GetLastError() 为 0。

我尝试使用 Windows 中可用的不同 CSP,但它没有改变任何东西。

有人可以向我解释这种行为吗?

0 投票
1 回答
1540 浏览

c++ - 使用 C++ Builder 5 实现文字自动化

我正在尝试通过 c++ builder 5 应用程序控制 Word。我想打开一个用 Word 创建的“.dot”模型文件并修改它。在“.dot”模型文件中有一些字段。例如,、 、Title等等LastName, 我想修改这些字段,将文本放入其中,然后用新名称保存文件,例如“Warning.doc”,而“.dot”文件保持不变。FirstNameAddress

我可以打开文件,计算它包含的字段数,但是当用字符串替换每个字段时,我不知道该怎么做,因为我没有关于 OleFunction 和 OlePropertyGet 方法的完整文档。我将我的源代码附加到此消息中,有人可以帮我解决这个问题吗?

0 投票
1 回答
173 浏览

c++builder - 编译 Borland C++ Builder 5

当我编译一个旧项目时,出现以下错误:

[链接器致命错误] 致命:无法打开文件“MSHTML.LIB”

有什么帮助吗?

0 投票
0 回答
356 浏览

c++ - 编译器生成无效的目标文件

我正在将一些新的主干代码合并到我们的一个大型遗留项目的功能分支中。该项目是使用 C++Builder 5.0 用 C++ 编写的。我们还使用 TwineCompile 3 来加快我们的构建时间。

合并后,现在编译时有时会出现以下错误:

只有在关闭编译器优化的情况下进行发布构建时才会出现此错误(这是我们通常发布代码的方式)。如果我重新启用编译器优化,或者如果我进行调试构建,则不会出现错误。此外,如果我禁用 TwineCompile,问题就会消失。

在“processor.obj”对象文件上运行 TDump 表明它引用了外部函数 TPrintTickÜ© ::Add。这个函数实际上应该是 TPrintTicketQueue::Add。文件 processor.cpp 在其中一个函数中包含以下代码:

作为参考,文件 printTicketQueue.h(包含在 processor.cpp 中)具有以下代码:

为了进一步混淆问题,如果我尝试在 processor.cpp 中的任何函数中创建指向 TPrintTicketObject 的本地指针,我会收到以下错误:

尽管知道 printTicketQueue.h 已包含在 processor.cpp 中,因此应该定义 TPrintTicketQueue。

我无法解释这里发生了什么。有没有人在使用 C++Builder 5.0 或 TwineCompile 时遇到过类似的问题?有没有办法解决或解决这个问题?

0 投票
1 回答
90 浏览

c++ - 如何隐藏 TDateTimePicker 中的“今天”按钮?

我目前正在开发一个用 C++Builder 5 构建的遗留程序。

我正在研究一个我们有一些TDateTimePicker控制的领域。dtp 本身工作正常,但由于我目前正在处理的本地化问题,我希望删除选择器底部的“今天”按钮,该按钮允许用户单击它以自动选择今天的日期。

另一种方法是从底部删除格式化的日期字符串,使其显示“今天”而不是“今天 MM/DD/YYYY”。

我找到了一些允许用其他语言格式化 Today 文本的解决方案,但没有用于 C++ 的解决方案。我曾尝试使用一些内置函数,例如高度和文本,但均未成功。我通常不是在这段代码中工作的人,所以我可能会遗漏一些简单的东西。

编辑:我在这个项目的 VM 中使用 Windows XP。

0 投票
0 回答
98 浏览

c++builder - 在 C++ Builder 10 中打开单元以 .h 开头

大约半年前,我们公司从 C++ Builder 5 切换到 C++ Builder 10 Seattle。如果您在 C++ Builder 5 中打开了一个单元(通过快捷键CTRL+ F12),它会自动打开 .cpp 文件。

现在,如果您使用 C++ Builder 10 打开一个单元,它会从 .h 文件开始,我必须手动切换到 .cpp 文件。这听起来像是一个小小的不便,但每次打开一个单元时我都必须切换,这真的很烦人。

是否有允许我切换到旧行为的设置?

0 投票
0 回答
172 浏览

c++builder-5 - Borland C++Builder 用包中的组件重新编译项目

我在 Borland C++Builder 5 中有一个项目。

该项目包含一些组件。

我正在更改组件代码,重建包并安装它,然后运行主程序(它使用组件)。

问题是执行了旧的组件代码。我还缺少其他一些重建功能吗?

我曾尝试删除软件包并重新安装它,但没有成功。仍然执行旧代码。

当我手动删除bpilib文件时,一切正常。有更快的工作路径吗?