问题标签 [c++builder]

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 投票
4 回答
8813 浏览

c++ - 通过 boost::lexical_cast 将 C++Builder AnsiString 转换为 std::string

对于学校作业,我必须使用 Borland C++ Builder 在 C++ 中实现一个项目。

由于 VCL 对所有 GUI 组件使用 AnsiString,我必须将所有 std::strings 转换为 AnsiString 以便显示。

当然可以,但是我想避免编写和代码重复有点乏味。当我们在其他上下文中使用 Boost 时,我决定提供一些帮助函数 go get boost::lexical_cast 来使用 AnsiString。到目前为止,这是我的实现:

一开始我在访问冲突之后得到了访问冲突,但是由于我添加了 .exceptions() 东西,所以图片变得更清晰了。执行转换时,我得到以下异常:

有谁知道如何解决它并可以解释为什么会发生错误?我的 C++ 经验非常有限。

反过来,转换例程将是:

也许有人也会在这里发现错误:)

最诚挚的问候!

编辑:

目前我正在使用 Jem 的编辑版本,它在一开始就可以工作。在使用该程序一段时间后,Borland Codeguard 在已经释放的区域中提到了一些指针算法。任何想法这怎么可能相关?

Codeguard 日志(我使用的是德文版本,译文标有星号):

Ansistringkonverter.h 是带有已发布运算符的文件,第 31 行是:

谢谢你的帮助 :)

0 投票
2 回答
1176 浏览

delphi - C++ Builder(和 Delphi)中的默认文件布局

一段时间以来,我一直对 C++ Builder IDE 感到非常烦恼。当我编码时,我总是对代码文件使用标准布局。我有一个我使用的标准标题,包括,即。文件的许可证、文件名、日期等。

但是我找不到任何地方可以插入这个,所以当我 - 例如 - 创建一个新单元时,会自动插入这个标题。当然,我可以每次都将其粘贴进去,但是花时间这样做会有点烦人。

所以我的问题是 - 是否可以为默认 C++ 文件创建文件模板或修改现有文件,以便它们始终以我预定义的布局开始。我担心的是,就像 C++ Builder IDE 中的大多数其他东西一样,这是硬编码到其中的。

当前创建一个新单元会创建一个 .cpp 文件,其中包含:

和相应的头文件:

这就是我希望将其更改为我自己定义的布局。

我正在使用 Codegear C++ Builder 2007。

0 投票
8 回答
422 浏览

c++ - C++ 模板:编码错误还是编译器错误?

我正在尝试使用模板来获取 std:list of items,其中每个项目都有一个指向包含它的列表的指针,但我一直在点击编译器消息。

这是代码的一个非常精简的版本。

但是,我的编译器在该行中遇到了问题:-

错误是:

就像“this”不知何故变成了const,但我不明白为什么。编译器是 Codegear C++Builder 2009。

我承认我不是 100% 满意使用模板,所以我不确定这是我的问题还是编译器的问题。没有使用模板的相同代码编译得很好,但显然这不是我想要的,因为我有几个项目/列表类想要以这种方式工作。

此外,是否有更好的技术可以避免在每个项目中包含所有“所有者”指针?

编辑:我认为我将示例剥离得太远了:“MyList”实际上引入了新方法,然后“MyItem”必须通过“所有者”指针访问。

摘要:感谢所有评论和回答。正如公认的答案所说,问题只是指向 BaseList 与 MyList 的指针之间的类型不兼容之一。

关于从 STL 容器和替代设计派生的问题也很有帮助,但我使用的解决方案与下面 Luc Touraille 的解决方案基本相同。

0 投票
2 回答
2929 浏览

visual-studio - 为 Visual Studio 创建自定义项目类型以将 Borland C++ Builder 项目构建到 Visual Studio

我想开始为 Visual Studio 开发一个自定义项目类型,它使用 Visual Studio 构建 BPR 项目。

我需要一些提示才能开始这个项目。我在哪里可以找到此类项目的模板?

我的目标是从开发过程中删除 Borland C++Builder 丑陋和不稳定的界面,并从 Visual Studio 中直接工作。

0 投票
2 回答
1087 浏览

c++builder - 带有新多核处理器的 Borland C++ 6?

我必须对用 Borland C++ 6 编写的应用程序进行一些改进。

我必须为这项任务购买新电脑。我已经知道 BCB 6 与旧的 Athlon 64 处理器有一些问题(编译时冻结)。

Howe BCB 6 适用于新的多核处理器?(英特尔酷睿 2 Quad Q6600 与华硕 P5QL PRO )

这里有什么问题吗?

0 投票
2 回答
1451 浏览

c++ - TBitBtn 和 TButton 继承链怎么了?

我最近开始将我的 RAD Studio 2007 项目升级到 RAD Studio 2009。我注意到的一件事是看似简单的代码突然无法编译。

示例代码:

这一切都用于编译,但在 2009 年它失败了。查看 2007 年TBitBtn用于派生自TButton. 因此,任何按钮控件(即 OnClick)上预期的事件都由TButton该类共享。因此,我能够将我的TBitBtn班级视为TButton.

2007继承链:

  • TBitBtn : T按钮

2009继承链:

  • TBitBtn : TCustomButton
  • TButton : TCustomButton

在 2009 年,TButtonTBitButton都派生自TCustomButton,我想如果按钮之类的属性被保存在那里就可以了。如果是这种情况,我可以更改代码来处理TCustomButton。不幸的是,TCustomButton不包含OnClick之类的东西。因此,我不能再将TBitBtn视为TButton。这两个类现在都有自己独立的按钮类属性(即它们都声明了自己的 OnClick 事件)。我的意思是,至少提供一个接口或其他东西,比如TButton和TButton的IButtonTBitBtn实现。

似乎这些看似无辜的变化会造成不必要的破坏。这似乎很奇怪,我想知道是否有人知道为什么 CodeGear(或任何框架作者)会做这种事情?

更重要的是,考虑到这种碎片化的继承,是否有优雅的解决方案可以将TBitBtn视为TButton

0 投票
1 回答
228 浏览

ide - BDS2006,C++:如何制作自己的表单模板来创建对话框?

当您在 BDS IDE 中创建对话框时,它是从 TForm 类派生的,它只是一个空窗体。由于我们的系统有一个 GUI 标准来说明所有表单的外观,因此制作模板并将其用作未来对话框的基础而不是普通的 TForm 会很好。

例如,我们所有的对话框都有我们的自定义组件,其中按钮对齐到右边缘,它们之间的间距为 10 px,等等。或者带有公司徽标的图标总是在同一个地方。或者只有关闭按钮 X 可见,没有最小化或最大化。现在,每当我需要添加新对话框时,我都会选择 New/Form 并且必须手动放置所有需要的组件和设置。定义模板的可能性将节省时间,我们不必记住所有这些标准细节。

有什么建议么?

0 投票
3 回答
3592 浏览

delphi - C ++ Builder中的#region等价物?与分组代码类似的方式?

我想知道 RAD Studio 中是否有与 Visual Studio 的 #regions 等效的东西。

我们在我工作的地方使用 Delphi 和 C++builder IDE,我希望能够使用类似区域的东西。

我和我的同事还没有找到一种对代码进行分组的等效方法……你知道吗?

0 投票
2 回答
769 浏览

delphi - 展平 TSpeedButton?

无论如何要强制将TSpeedButton重新绘制成平面?

使用触摸屏显示器时,鼠标不会移出按钮,因此凸起的边框会留在屏幕上,即使您单击其他按钮也是如此。

0 投票
4 回答
10551 浏览

exception - 在 C++ Builder 中处理访问冲突异常?

我正在尝试做:

我虽然这应该捕获访问冲突异常并通过显示错误消息来处理它。

但由于某种原因,我变得简单

访问冲突

消息而不是完整的

模块 YYY 中的访问违规 XXX。写入地址 ZZZ。

顺便说一句,ExceptObject()由于某种奇怪的原因,例程返回 NULL。

我在这里想念什么?