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

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 投票
3 回答
4160 浏览

c++ - 如何将 AnsiString 转换为 char?

我担心的是转换。我正在使用 C++ Rad Studio XE8(不要问为什么我必须这样做)。

我有变量

我想sz看起来像这样

我如何将其转换AnsiString a为最终等于?charsz0xD8

我已经尝试过memcpy,strcpy等,但找不到解决方案。

0 投票
0 回答
116 浏览

c++ - Firemonkey TGrid 格式化日期

我有一个 firemonkeyTGrid控件,它似乎正在检测单元格内的文本是日期时间,然后将其自己的格式应用于单元格。例如,我生成了三个字符串并将它们放入网格中的一行中。

当这些字符串被放置到网格上的单元格中时,人们会期望结果看起来像这样:

12/30/2015 PM | 12/30/2015 PM | 12/30/2015 1:00PM

但是,我得到的实际结果是:

PM 12/30/2015 | PM 12/30/2015 | 1:00PM 12/30/2015

(请注意,在第三个字符串中,日期在创建字符串时首先出现,但是时间在网格单元格中时首先出现)

我推断网格正在检测日期并通过修改我的字符串的创建来应用自己的格式,如下所示:

完成此操作后,字符串会出现在它们的单元格中,就像人们期望的那样:

Foo 12/30/2015 PM | Bar 12/30/2015 PM | Foobar 12/30/2015 1:00PM

因此,看起来TGrid控件会自动应用日期格式,时间先到后,日期再到。

我查看了TGrid控件的属性/选项列表,但找不到有关设置日期格式的任何信息。

我所看到的记录行为是我以某种方式错过的吗?如何控制单元格内日期的格式?

0 投票
1 回答
1252 浏览

imap - 在 C++ Builder 中使用 Indy IMAP4 下载电子邮件附件文件

我正在寻找有关如何在 C++ Builder 中使用 Indy Imap 下载邮件附件的分步解决方案(我使用 C++ Builder XE8)。我在 Delphi 中阅读了一些教程,但真的很困惑。

比如选择邮箱后应该怎么做?

或者

或者

或者

那么,接下来我应该怎么做才能识别 MessagePart 没有,有附件文件?

最后一个,如何将该文件保存到本地驱动器?

我应该用 C++ 翻译以下内容吗?

但我无法创建这样的声明

0 投票
1 回答
145 浏览

c++builder - 线程执行后进度条为 NULL

我有一个带有进度条的表单和一个将 xml 上传到服务器的按钮。当按下按钮时,会创建一个新线程来创建一个套接字,然后它将数据以块的形式发送到服务器,同时它会更新进度条。现在,当第二次按下上传按钮时,我遇到了访问冲突,并且在调试器中,进度条对象的地址为 NULL。我不知道为什么进度条会被释放,所以如果有人有任何想法,我将不胜感激。

PS目标操作系统是windows PS2如果相同的代码在主线程上运行而不使用线程,那么我似乎没有这个问题,即使我在线程中整体跳过进度条的使用它是在第一次按下上传按钮后再次设置为 null。

线程构造函数:

OnTerminate 处理程序:

执行方法:

两个补充功能:

OnConnect 处理程序:

以及进度条的更新方法:

0 投票
1 回答
77 浏览

properties - += 运算符不调用属性设置器

我在 Embarcadero C++Builder XE8 中使用以下代码。

在 Unit1.h 中:

在 Unit1.cpp 中:

在我调用的主程序中:

为什么不Value+= 10调用SetValue(20)

0 投票
3 回答
256 浏览

android - 在 C++ Builder XE 8 (firemonkey) 中手动创建 TOpenDialog

我正在使用 C++ Builder XE8。由于TOpenDialog不适用于Android,我正在尝试自己制作这样的东西。我的逻辑很简单。它将开始检查“/storage”中的文件和文件夹,并在TListView. 如果我触摸一个文件夹(名称),它将打开该文件夹,如果我触摸一个文件,它应该在标签上显示名称。TListView所以我为's OnItemClick事件分配了一个函数。

这是代码。fpath 是字符串,Label1 显示当前文件夹,Label2 显示选定文件。

以下是扫描文件和文件夹并显示它们的函数代码。字符串列表是 TStringList。

这里的问题是,如果我ListView1->ClearItems()在 TForm1::showfiles 中使用它会显示一条错误消息“地址访问冲突(随机否),访问地址 00000009”。如果我不使用ClearItems()它,只需添加更多已存在行的行。我是初学者,所以我不知道我做错了什么。

0 投票
0 回答
457 浏览

android - 在 C++Builder XE8 中检查移动设备上的 Internet 连接

我在这篇文章中找到了 Delphi 代码:

使用 Delphi XE5 检查移动设备上的 Internet 连接

我需要 C++Builder 类似的东西,而不是 Delphi。

0 投票
1 回答
75 浏览

c++ - 使用 boost::bind 和 __fastcall

我有一个功能void __fastcall ClassName::FunctionName()

我想使用 boost::bind 创建一个指向该函数的 boost 函数。这可能吗?写作boost::bind(&ClassName::FunctionName, this)给出编译错误“必须调用成员函数或其地址”

一种可能的解决方法是创建一个包装函数,但这是不可取的,因为它会创建无用的额外代码:

0 投票
1 回答
374 浏览

c++ - 在 C++ Builder / Firemonkey 中使用表单创建来管理内存

到目前为止,在我的应用程序中,所有在运行时创建的附加表单都应该是模态的。因此,在创建新表单时,我使用类似于以下代码块的内容:

使用这种方法,表单的内存在用户关闭后很容易被删除。

但是,当我试图弄清楚如何处理非模态对话框的内存管理时遇到了一个问题。显然,我不能简单地在ShowForm方法末尾调用 delete,因为表单会在创建后立即被删除。所以我留下了这样的东西:

根据这个文档和我编写的测试应用程序,我知道form一旦它的所有者被关闭,指针就会被删除。但是,这仍然让我遇到以下情况:

假设我有FormA一个按钮,可以创建并显示FormB使用代码的实例,就像上面的方法一样。我现在单击按钮创建 aFormB然后关闭FormB3 次。直到FormA关闭,三个实例都FormB保留在内存中。

如何管理用于创建表单的内存,以便在关闭表单后删除为表单分配的内存?是否有标准的最佳实践,或者我缺少的内置功能?

0 投票
1 回答
60 浏览

c++ - 检测给定类型的表单是否已在 Firemonkey 应用程序中打开

我试图想出一种方法来判断给定类型的表单是否在我的应用程序中打开,然后再打开一个新表单。这样做的原因是,应用程序中有某些形式,一次只打开一个实例才有意义,但我宁愿不让它们严格模态化。

为了解决这个问题,我实现了以下方法,它迭代Screen->Forms并尝试将每个表单转换为提供的表单类型。我想如果演员表已经制作好了,我发现这种类型的表格已经打开了。

然后我在尝试创建表单的任何地方调用该方法,如下所示:

我遇到的问题是,我似乎总是能够成功地将TCommonCustomForm对象Screen->Forms转换为我传入的任何类型的形式。

有没有办法可以改变我的逻辑以成功检测应用程序中是否已经存在某种类型的表单?有没有更好的方法来解决我应该研究的这个问题?