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

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

c++builder - 生成器 C++ 调用 VC++ 类

我已经用 VC++ 编译了一个 Hunspell DLL,其中包含一个类......现在我想在 Builder C++ 2006 中调用该 DLL 来使用它的功能......我该怎么做?

我试过:

问题是,如果在 BuilderC++ 2006 中,我可以在 obj-> 之后按 shift-space 后显示函数,但看起来它并不能真正识别类函数,并且它一直发出 Unresolved external '__fastcall Hunspell::add_dic(...); ' 参考自……

将 VC++ dll 调用到 Builder C++ 中的确切方法是什么?在此先感谢大家...

干杯,路易吉诺

0 投票
1 回答
1649 浏览

visual-studio-2010 - 在 Visual Studio 2010 中查看、构建和调试 Borland C++ Builder 项目

我想使用 VC2010 来处理我拥有的 BCB 2006 项目。我不想将代码转换为 VC,因为需要移植很多 UI。我只想能够从 VS IDE 查看构建和调试。

查看:我假设一旦我为本地 BCB 代码创建了 VS 项目,就可以查看,尽管 UI 编辑器不会。

构建:我发现了 VS 的“C++ Native Multi-Targeting”选项,虽然我不确定在那里设置不同的选项(水仙花被提到是有帮助的,尽管我不确定附加值是什么超过现有功能)。

调试:完全不确定如何在 VS 中执行此操作。有一些独立的控制台工具可以转换调试信息文件,例如 tds2pdb(文档链接在哪里?)。

如果有人有这样的任务经验,我会感谢你的任何建议。

0 投票
1 回答
1246 浏览

memory-management - bds 2006 C 隐藏内存管理器冲突(类 new / delete[] vs. AnsiString)

我使用BDS 2006 Turbo C++已经很长时间了,我的一些大型项目(CAD/CAM、3D gfx 引擎和天文计算)偶尔会抛出异常(例如,在 3-12 个月的 24/7 重型使用中) )。经过大量调试后,我发现:

此代码通常在模板中,其中_s也可以是类,因此delete[]此代码应该可以正常工作,但delete[]对于结构不能正常工作(类看起来不错)。没有抛出异常,内存被释放,但它以某种方式损坏了内存管理器分配表,在此之后任何新的分配都可能是错误的(新的可以创建与已分配空间甚至未分配空间的重叠分配,因此偶尔会出现异常)

我发现如果我添加空析构函数_s比突然看起来一切正常

那么现在是奇怪的部分。在我将其更新到我的项目后,我发现AnsiString该类的重新分配也很糟糕。例如:

在此代码dat中包含一些有用的数据,然后是txt通过添加行创建的一些字符串,因此txt必须重新分配几次,有时dat数据会被覆盖txt(即使它们没有重叠,我AnsiString认为重新分配所需的 temptxt与重叠dat

所以我的问题是:

  1. 我在 code1, code2 中做错了吗?
  2. 有什么办法可以避免AnsiString(重新)分配错误?(但仍在使用它)

    • 经过大量调试(在发布问题 2 之后)我发现AnsiString不会导致问题。它们仅在使用它们时出现。真正的问题可能在于OpenGL客户端之间的切换。我有带有矢量图形预览的打开/保存对话框。如果我禁用这些VCL子窗口的OpenGL使用,那么内存管理错误就会完全消失。我不支持是什么问题(MFC/VCL之间不兼容AnsiString窗口之间的不兼容,或者更可能是我在切换上下文时犯了一些错误,将进一步调查)。关注的OpenGL窗口是:
    • VCL窗体 + OpenGLCanvas客户区内的
    • MFC打开/保存对话框的子级 + 停靠预览VCL表单 +客户端区域内的OpenGLCanvas

附言

  1. 这些错误取决于数量new/delete/delete[]不是分配的大小
  2. code1 和 code2 错误都是重复的(例如,有一个解析器来加载复杂的 ini 文件,如果 ini 没有更改,则错误发生在同一行)
  3. 我仅在大型项目(纯源代码> 1MB)上检测到这些错误,并结合使用AnsiString和模板与内部动态分配,但它们也可能出现在更简单的项目中,但很少发生以至于我错过了它。
  4. 受感染的项目规格:
    • win32 noinstall 独立(使用Win7sp1 x64但在XPsp3 x32上的行为相同)
    • 如果使用GDIOpenGL/GLSL
    • 不计量是否使用设备驱动程序DLL
    • 没有OCX或非标准VCL组件
    • 没有DirectX
    • 1 字节对齐的编译/链接
    • 不要使用RTL、包或框架(独立)

抱歉英语/语法不好......任何帮助/结论/建议表示赞赏。

0 投票
1 回答
544 浏览

c++ - 如何在程序中打开用户定义的扩展文件?

我正在使用 Borland C++Builder 2006 编写数据记录器 GUI 软件。这是我公司想要的平台。

在我定义的扩展名为 ".evp" 的特定文件中进行一些分析后,我正在保存收到的数据。我在我的程序中定义了保存和打开功能,效果很好。

现在我对如何在不使用我的软件的情况下直接打开我保存的文件有疑问。我的意思是当我双击一个保存的文件时,它会用我的软件自动打开并显示数据。然后有两个问题:

  1. 我如何告诉 Windows 用我的软件打开这个“.evp”文件。
  2. 我如何在我的软件中处理打开的文件并使用我定义的 Open 函数。
0 投票
1 回答
1214 浏览

sockets - 带有 Indy 套接字的 UDP 广播:如何选择正确的接口?

使用 C++Builder2006

我正在修改一个旧的小程序来做这些事情:

  1. 发送 UDP 广播消息(使用 255.255.255.255 地址)
  2. 从所有连接的设备中获取答案(配备 RabbitCore RCM3200 的硬件)
  3. 可选择广播另一条 UDP 消息,其中包含其中一个的 MAC 地址以及该设备必须为自己设置的正确网络配置。

(这是因为设备在安装时可能有错误的 IP/网络掩码,并且需要一种独立于 IP 的方法来设置它。这是设备制造商提供的一种完善的方法,因此无法更改,我只是描述我在做什么)。

我面临的问题在这里得到了很好的描述:简而言之,Win7不会通过所有接口发送UDP消息,而只能通过“首选”接口发送。由于该程序是使用 Indy UDPClient 套接字 (TIdUDPClient) 构建的,因此我想保持原样。

问题:

  1. 有一种方法可以“强制”UDP 套接字通过特定的网络接口发送吗?这样我可以“手动”循环并将广播发送到所有(相关)网络
  2. 如果不是......我应该怎么做才能获得相同的结果?
0 投票
1 回答
75 浏览

c++ - 无法在 C++ Builder 2006 中为应用程序清单编译资源

我正在尝试按照这篇文章将应用程序清单添加到使用 C++Builder 2006 构建的程序中。

(清单是为我的程序获取管理员权限,他的名字中包含“setup”,因此会触发“此程序可能未正确安装”警告)。

我在项目文件夹中有MyApp_Setup.exe.manifest ,以及项目中存在的MyApp_Setup1.rc文件。

当我尝试构建时,我得到:

[RC 致命错误] MyApp_Setup1.rc(1):文件创建失败

我做错了什么,或者我应该怎么做?

问题已编辑,因为我弄乱了文件名并且输出错误不匹配

0 投票
0 回答
76 浏览

c++ - C++Builder 2006:如果编译了 .rc 文件,则不再有程序图标

我像往常一样在项目选项中添加了一个 .ICO 文件,但是由于我在项目中添加了一个 .rc 文件(用于嵌入清单),因此程序图标不再嵌入到 exe 中。我试图将相同的图标放在表单“图标”属性中并且它是可见的,但是对于资源管理器中的 .exe 文件仍然没有图标可见。

我怎么能解决这个问题?

0 投票
0 回答
153 浏览

c++ - TChart 中的 TCustomSeries.Clicked 事件被抛出并失败

我正在使用带有 TChart Standard 4.04 的 Borland C++Builder 2006,但我遇到了问题。我有一个 TChart,当计算用户点击它的位置时,它无法进行此计算,似乎没有办法避免这个问题。其实我的感觉是,没有人点击图表,事件是自己内部抛出的。

附上你可以找到错误的详细信息,我想知道究竟在做什么,以尽量避免错误。我已经尝试避免将系列与图表断开连接的问题(更新系列内容时,ParentChart 属性为 NULL),但它仍然会发生。

此外,您还可以在同一张附图中找到有问题的图表(标记为红色)。下面,稍微解释一下该图表的情况。它包含3个系列:

  • 1 TPoint系列:

    • 该系列只有一个点,与下一个 TPointSeries 中选定的点在同一位置。

    • 它显示更大的选定点,顶部图表(不会产生任何问题)显示选定项目的详细信息。

  • 1 TPointSeries

    • 该系列代表了演变,并且对于对患者进行的每项研究都有一个要点。
  • 1 TLine系列

    • 该系列代表了演变,并且对于对患者进行的每项研究都有一个要点。

    • 最后,它加入了上一个系列的所有点。

在这里,是图像

图片

我已经能够用下一个简单的单元重新创建问题。它包含一个显示 2 或 3 个点的图表。为了在 2 和 3 点之间进行更改,您可以使用按钮,或单击系列中的任何点。每次必须更新该图表时,所有系列都将被清空,并再次填充所需的数据。在这种状态下,如果您使用按钮或单击系列点,它不会失败。

但是,表单也有一个复选框,简单地说,在更新图表后增加了 1 秒的等待时间。在这种情况下,当图表中有 3 个点并且您单击任意点更改为 2 个点时,图表会更新并停止 1 秒。在这一秒之后,错误出现了。

这里,文件.h的代码:

这里,文件.cpp的代码:

这里,文件.dfm的代码:

0 投票
1 回答
49 浏览

controls - 为什么我的控件没有捕捉到 MouseWheel 消息?

使用 C++Builder 2006。

我正在尝试修改 TCustomControl 派生类,并且我需要该类来捕获鼠标滚轮事件(或消息)。我试图使用这个 Delphi 问题的答案,但我没有得到这个事件。

这是我的相关代码:

TMouseWheelHandler.h

TMouseWheelHandler.cpp

这就是我在表单中使用控件的方式:

我从调试打印中看到的是,从来没有调用过任何DoMouse * 函数和MouseWheelHandler函数,而 Form GGMouseWheel * 函数是。

我所需要的只是管理 DoMouse* 函数中的一些变量。

我究竟做错了什么?