问题标签 [c++builder-xe2]
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++ - 宏:如何更改 __VA_ARGS__ 中的每个值
我正在使用 C++ Builder XE3。
目前我有如下宏:
现在我想让所有参数都是 AnsiString。我很容易处理这个论点:消息如下:
但是对于VA_ARGS,我不知道如何处理参数以确保放入的所有参数OTHER_LIB_LOG
都是 AnsiString。
修改源代码对我来说很难 OTHER_LIB_LOG
,所以我必须使用宏来完成。
任何帮助将不胜感激。
c++ - 在 C++ Builder XE2 中重命名 VCL Form 类
在工作中,我们有一个相当大的 C++ VCL 表单应用程序。它在 Embarcadero XE2 中编译,但可以追溯到很多年前。我需要向此应用程序添加一个新表单。
当您执行“文件 > 添加新 > VCL 表单”时,会在类名所在的位置创建一个表单TForm1
。还创建了一个指针,如下所示:TForm1 *Form1
出于显而易见的原因,我想重命名表单和指针,比如TStuffForm
and *StuffForm
。问题是我无法让它工作!
对于任何实际的 XE2 用户:这样做的规范方法是什么?
我曾尝试通过仔细替换字符串来直接在代码中重命名,但它不起作用。IDE 发疯了,向我发出多个模式弹出窗口,抱怨缺少 TForm1 类。那太不愉快了,我放弃了。
我也尝试了 IDE 中的重构功能,但这也不起作用。所以现在我有点卡住了。
c++builder-xe2 - 全局变量初始化和终结
我有一个在两个线程之间共享的关键部分:
我已将此变量声明为全局变量。现在因为 Delphi 风格的类必须使用 operator new 来构造,所以我将上面的声明修改如下:
使用 operator new 初始化锁变量的最佳位置在哪里?使用 operator delete 完成全局变量的最佳位置在哪里?应该是 WinMain 方法吗?访问锁变量的类之一的构造函数?还是代码中的其他地方?
delphi - 透明度和运行时主题
当为整个项目禁用运行时主题时,将使用黑色背景绘制透明图像。禁用运行时主题时是否可以在按钮上绘制透明图像?我使用的按钮来自 TMS 组件包,它的类名是TAdvToolButton
. 我需要禁用主题,因为我想完全控制应用程序的外观。这是一个重要的要求。请尝试解释透明度和主题之间的联系,因为我看不到它。我认为这是两个不同的东西。
c++builder - 在borland c ++ builder中的表单之间传输数据
我在 c++ builder 中设计了两种形式:
- 主函数
- 选择名称
在 TfrmMain 类中,我有一个名为 btnNext 的按钮。单击 btnNext 时,下面的代码将运行并创建新的 TfrmChooseName。
同样在 TfrmMain 我有名为 txtInput 的 TEdit 控件。
在 TfrmChooseName 的构造函数中,我想获取 txtInput 的文本并将其设置为表单的标题,但发生访问波动错误!
我也让这两个班级成为朋友!
c++ - 在 C++ builder 中从 UnicodeString 传输的 AnsiString 和 AnsiString 的区别
我正在使用 C++ Builder XE3,但我遇到了 AnsiString 的一个奇怪问题。
看看下面的代码
出乎我的意料,它第一次运行良好,但第二次抛出“格式错误”异常。即使我只是用代码 2 调用了一次 funcA,问题仍然存在。
因为当我在 temp1 或 temp2 中 ShowMessage 时没有区别。我完全不明白为什么两次通话给了我不同的结果。
funcA 来自第三个库,代码有点复杂。所以在我追踪这个库的代码之前,我想我应该知道 Code1 和 Code2 有什么区别。
谢谢。
c++ - C++ 生成器异常 - StackTrace 为空?
我想获取堆栈跟踪但它总是空的?
使用 C++ Builder XE2。
编辑:此代码在 TForm1::Button1Click 上执行。
c++ - 使用多个 TClientSocket 实例导致 Windows 句柄泄漏的 C++ 应用程序
TClientSocket
我在使用 Borland/Embarcadero组件时遇到了明显的手柄泄漏。我有一个创建多个TThread
实例的应用程序,每个实例TClientSocket
动态创建一个对象,连接到它的目标发送一些消息,然后被删除。然后TThread
删除实例(使用FreeOnTerminate = true
)设置。我知道这效率低下,但它完美地满足了应用程序的需求——TThread
能够同时存在的最大实例数限制为 32。我看到的问题是我可以看到一个明显的 windows 句柄泄漏问题通过任务管理器。为了隔离问题,我在单线程意义上应用了相同的问题,只是动态创建了一个TClientSocket
对象并在主 VCL 线程中的单个循环内完成后再次删除它。这表现出相同的手柄泄漏问题。我知道该组件已被弃用,并且我知道我正在做的事情效率低下,但我不明白为什么会有句柄泄漏。在删除对象之前是否需要对对象执行任何操作TClientSocket
以消除此句柄泄漏,或者这是组件中的错误?我在非阻塞模式下使用套接字并将事件处理程序分配给OnConnect
OnDisconnect
和OnSocketError
。
c++ - C++ builder滚动框组件响应鼠标滚轮
我一直在寻找使鼠标滚轮与滚动框组件一起使用的选项,到目前为止我得到了这个
到目前为止,它可以工作,但滚动速度非常慢。有什么方法可以让它滚动得更快,或者在 c++ builder 中处理滚动的更好方法吗?
dialog - 从资源实现对话框
我目前正在尝试将应用程序从 owl 移植到 vcl。
在我的旧项目文件中,我能够加载类似的对话框
TBatchAcDialog(TWindow* parent) : TAPDialog(parent, BATCH_DIALOG)
但是,使用 TTaskDialog 代替它不支持第二个参数。
我为用户界面设计者找到了一个解释,当右键单击菜单时,您可以从 rc 文件加载第一个声明的菜单。
但是,我真的不知道如何在此 IDE 中将这些对话框加载为对话框并将它们再次链接到我的类。
你们中有人知道这一点,或者可以将我链接到关于类似问题的文章吗?尽管实施 rc-dialogs 对我来说似乎是一个常见问题,但我似乎未能找到合适的解决方案。