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

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

vcl - 如何将 TStringDynArray 转换为 TStringList

TDirectory::GetFiles()用来获取文件列表(显然)。结果存储在 a 中TStringDynArray,我想将其传输到 aTStringList的唯一目的是使用IndexOf()成员查看列表中是否存在字符串。

任何可以让我知道从 TDirectory::GetFiles() 返回的文件列表中是否存在某个字符串的解决方案都可以。虽然,知道如何转换 TStringDynArray 会很有趣。

0 投票
1 回答
2521 浏览

c++ - 当文件名包含宽字符时使用 ifstream

在 Windows 7 中使用 C++Builder XE5 (bcc32)。

我正在尝试打开一个文件名包含宽字符的文件。我正在测试的实际文件名是C:\bΛx\foo.txt. 那里的非ASCII字符是 U+039B 。

我将此文件名正确存储在std::wstring. 但是,尝试:

无法打开文件。

当然,在标准 C++ 中fopen只需要char *. 但是,Dinkumware C++ RTL 实现有一个重载接受wchar_t *. 不幸的是,该重载的实现...\Embarcadero\RAD Studio\12.0\source\cpprtl\Source\dinkumware\source\fiopen.cpp并没有调用_wfopen. 相反,它用于wcstombs将字符串转换为 UTF-8,然后调用fopen.

检查源代码fopen,它调用一个底层函数的窄版本___topen,最终将 UTF-8 字符串传递给CreateFile.

当我检查使用 Sysinternals Process Monitor 打开文件的尝试时,它显示它确实尝试使用 UTF-8 文件字符串打开文件,并且操作系统拒绝了这个结果NAME COLLISION

如果我使用打开文件,_wfopen( filename.c_str(), L"r" )那么一切都很好,我可以使用 CI/O 函数读取文件,但我当然不能使用 C++ iostreams。

有什么方法可以std::ifstream用来打开文件名中带有 U+039B 或其他此类字符的文件?

请注意, usingstd::wifstream 也不起作用(它仍然尝试打开文件名的 UTF-8 版本)。

0 投票
1 回答
257 浏览

c++ - C++03 中的支撑初始化

该程序是否应该在 C++03 中正确初始化字符串?

使用 bcc32 6.70,输出为256,并在调试器中检查字符串,其内部指针似乎是垃圾地址。

0 投票
1 回答
171 浏览

teechart - 单击滚动箭头时的 TeeChart TLegendScrollBar 视觉问题

IDE:c++ Builder XE5 Update 2

发球台:TeeChart Pro 2014.11.140512 VCL/FMX release

我最近第一次使用 TeeChart 的TLegendScrollBar工具(方便的工具)。我遇到的问题:

单击其中一个滚动箭头时,会发生以下情况:

  1. 单击- 所有者图表的TChart.Color属性更改(背景颜色)。一旦另一个事件更新图表,原始颜色就会恢复。
  2. 按住- 所有者图表的TChart.Color属性在原始颜色和不需要的颜色之间随机切换。

颜色的变化似乎发生在一个电话之后(在对Single Click案例TChart.OnAfterDraw的初始OnAfterClick调用之后)。

示例(之前和之后):

之前和之后

易于复制:

  1. 创建新的 VCL Forms 应用程序并向表单添加一个TChart组件。
  2. TLegendScrollBar工具和系列数添加到图表(图表编辑器)。
  3. 将该TChart.Legend.MaxNumRows属性设置为小于 的值TChart.SeriesCount()
  4. 跑。

问题

  1. 之后是否有一个入口点TChart.OnAfterDraw,我可以尝试纠正这个问题?还是解决方法?
  2. (如果不是1)有没有办法完全删除(隐藏和禁用)滚动箭头?(强制用户使用鼠标滚轮或滚动拇指滚动图例)
0 投票
1 回答
345 浏览

c++ - C++ Builder AnsiString delete all except < ... >

I have: Memo2->Text= IdHTTP1->Get("http://www.twitch.tv/starladder1");

In Memo2:

How to delete ALL exept 'STREAM NAME STREAM NAME'. I need Label1->Caption='STREAM NAME STREAM NAME'.

0 投票
1 回答
125 浏览

windows - C++Builder - 在汇编中实现整个函数

我正在尝试实现这个内联汇编技巧来获取 C++Builder 中 EIP 的值。以下代码在发布模式下工作:

但是它在调试模式下不起作用。在调试模式下,代码必须更改为:

通过检查生成的程序集;不同之处在于,在调试模式下,为get_eip()函数(第一个版本)生成的代码是:

但是在发布模式下,代码是:

当然我可以#ifdef NDEBUG用来解决这个问题;但是有什么语法可以用来指定整个函数在汇编中并且编译器不应该插入这些push ebp东西吗?(或以其他方式解决此问题)。

0 投票
1 回答
171 浏览

c++ - ListView 列着色错误

我想为选定的列添加颜色填充。

我在ListView1CustomDrawItem处理程序中绘制的项目:

如果我理解正确,我应该在ListView1CustomDraw处理程序中绘制选定的列:

结果是:

http://i63.fastpic.ru/big/2014/1120/ba/e5b6d30eb9e05bbe3661aed295c28aba.jpg

也可以在视频中看到:http: //youtu.be/XGXpWCUtGbU

如您所见,当我将光标移动(不要单击)项目上时,它们会被错误地重绘。但是项目必须绘制在列彩色矩形上。我怎样才能解决这个问题?

0 投票
0 回答
203 浏览

c++builder - 如何在 C++ 构建器应用程序中将事务级别更改为脏读

我正在尝试遵循这些步骤。它有点过时了,但似乎这就是我需要的。

http://www.drbob42.com/examines/examin95.htm

在 DBX4 部分,用户在 Delphi 中执行了以下操作。

我正在尝试在 C++ 中做同样的事情

但是,我收到带有消息“未分配代码”异常的 TDBXError。好像我遗漏了一些东西,但我无法在网上找到解决方案。

我正在使用 C++ Builder XE 5 我试图通过 DBX 连接到 Interbase 数据库来做到这一点。

0 投票
1 回答
434 浏览

icons - TIcon 只从图标文件中加载一张图片

我有一个包含 24x24、32x32、48x48、64x64 和 256x256 图标的图标文件。但是,当我像这样加载它时:

尽管我的图标包含图标的多种分辨率,但它似乎只从文件中加载一个图像。结果是任何表单都使用为任务栏图标和角图标重新缩放的单个图标,这看起来很糟糕。

但是,如果我设置filename.ico为已编译资源,或者如果我在项目属性 > 应用程序 > 图标中设置图标,那么我的表单使用 24x24 图标作为角图标,使用 48x48 图标作为任务栏。

我的问题是:如何让我的表单使用filename.ico直到运行时才知道文件名的图标;但仍然使用 24x24 图标作为角落并使用 48x48 图标作为任务栏?

注意。我不喜欢硬编码这些尺寸 24x24 和 48x48,因为其他版本的 Windows(或者如果用户使用 Windows 字体缩放选项)可能会需要不同尺寸的图标。

0 投票
0 回答
1194 浏览

winapi - 等待 svchost.exe 时 CreateProcess() 和 ShellExecute() 冻结

在 Windows 8 下,我正在启动一个外部程序,但它作为等待 svchost.exe 返回的后台进程卡住了。如果我手动启动相同的应用程序(双击)它启动就好了。如果我在 Windows 7 下运行相同的代码,它工作得很好。

我主要尝试了 3 种执行应用程序的方法:

这返回正常,但应用程序冻结等待 svchost.exe。然后我尝试了扩展版。

这也返回 ok 并且我设置了 hInstApp,但仍然像以前一样冻结。然后我尝试了 CreateProcess()。

这也返回 ok 并且 PROCESS_INFORMATION 已正确填写,但仍然冻结。当我创建进程时,RAD Studio 会显示一条调试消息:

在 Windows 8 任务管理器中,我可以看到进程正在等待 svchost.exe 返回。