问题标签 [c++builder-xe4]
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++ - 从包含代表约 64 GB 值的十进制数的字符串变量中获取值
我有一个将字符串转换为值的问题。
以下是我尝试过的示例代码。
我正在 C++ Builder XE4 上尝试这个。
ToDouble() 和 strtol() 都不起作用。
我知道 strtol 不起作用,因为长类型高达 4.3GB。
C++ Builder XE4 中是否有任何函数,当我处理 64GB 或数百 GB(例如 500GB)时,我可以将 strSize 转换为 size_t 值?
c++ - 如何知道 TStringList 是否是新的
我在 Windows7 Professional(32 位)上使用 C++ Builder XE4。
我有一个关于 TStringList 的问题;
我想做的是知道 TStringList 变量是否是新的,以防止 Add() 方法到非新的 TStringList;
我认为检查 NULL 可能有效,但它没有。
上面的代码显示“非空”对话框。
检查新的或非新的 TStringList 的标准方法是什么?
c++ - boost::system::error_code::message() 使用 boost::asio 套接字抛出访问冲突异常
我正在实现一个客户端应用程序,该应用程序必须与硬件设备建立少量套接字连接。我已将问题分解为以下小代码子集
我正在使用 Embarcadero RAD studio XE4 C++ Builder,当我在主 VCL 线程中运行上述代码时,它工作正常。当我使用多个连接运行它时,上面的代码在TThread
类的多个实例中运行,这就是当我遇到访问冲突问题时 - 似乎当调用error_code
修改它时,实例connect
的内部成员变为 NULL,所以当我打电话时,我得到了访问冲突。即使我只有一个后台线程运行,也会发生这种情况。m_cat
error_code
message()
我上面的代码是否有可能在我需要使用它的方式上根本不是线程安全的?我试图找出为什么这段代码不会在后台线程中运行,但找不到任何关于它的信息。
我正在运行的 boost 版本是 1.50,因为这是用于在 RAD studio 中构建 64 位应用程序的集成版本。
有没有其他人在多线程设置(在 Embarcadero 或其他)中遇到过这个问题,如果是这样,你是如何解决的?或者这个类根本不安全地以多线程方式使用?
search - 使用 C++Builder XE4 在 ADO 中搜索多个字段
我正在使用 Locate 方法在 TADOTable 中进行搜索,但它不适用于多字段搜索。(我直接在 TADOTable 上搜索,因此在这种情况下对 SQL 不感兴趣)。
以下代码在使用单个字段时工作正常,但不适用于多个字段!
delphi - ADO 错误异常处理?
我刚刚通过将表和查询替换为 ADO 组件中的等效项,从使用 BDE 切换到 ADO。
我总是在 try...catch 中执行查询,如下所示:
由于我切换到 ADO,这些异常(DBEngineError、DatabaseError)是否适用?
我已经对我的帖子进行了编辑,以包括 Delphi 人员,他们反应迅速。无论是否在 Delphi 代码中回答。
c++builder - 在 Object Inspector 中未找到 TCheckBox 的已检查属性
我的环境:C++ Builder XE4
我尝试将 TCheckBox 的默认值设置为“true”。我以为 TCheckBox 有一个名为“Checked”的属性。但是,我在对象检查器中找不到“已检查”属性。
另一方面,我可以在代码中设置“已检查”。
在这种情况下,我应该写代码吗
对于每个 TCheckBox,需要将其设置为默认值吗?
我不太确定 RadStudio 或 C++ Builder 的旧版本。但我认为在 C++ Builder 6 中有“已检查”属性。
c++ - 无法检测到 C++ 同步 boost::asio::ip::tcp::socket 连接正在关闭
我正在使用boost::asio
同步 TCP 套接字连接到在同一台计算机上运行的 node.js TCP 服务器应用程序。我在 Windows 上使用 Embarcadero RAD studio XE4 构建使用 Embarcadero 集成升压版本 1.50 的 64 位应用程序。
除非 node.js TCP 服务器关闭,否则一切正常。发生这种情况时,我的 C++ 客户端应用程序在我从套接字读取时未检测到断开连接。但是,当我写入套接字时,它确实检测到断开连接。
我当前的代码是在尝试理解 boost 文档和 SO 上的各种答案后编写的。代码的阅读部分如下(我省略了对错误代码紧凑性的检查)
这不是一个很好的系统,因为它在一个循环内的自己的线程中运行,并不断地轮询数据,直到程序关闭。通常read()
,当那里没有数据时,我不会在套接字上执行 a ,但在这种情况下我会这样做,因为所有文档都让我相信只有在对套接字执行读取或写入时才会检测到套接字断开连接。问题是,当 node.js 应用程序关闭时,上面的代码根本不会检测到断开连接。如果我正在写作,我会检测到它(代码的写入部分使用与读取相同的 boost::asio::error` 错误进行检测)但在读取时不会。
显然,我无法读取大于可用的字节数,否则我的线程将阻塞,并且稍后我将无法在我的线程循环中执行写入。
我是否缺少另一个特定的提升错误代码来检测错误情况?或者是零长度读取的问题。如果是这种情况,我还有其他选择吗?
目前,我正在让 node.js 服务器在它关闭时向套接字写出一条特定的消息,我正在检测它,然后自己关闭客户端。但是,这有点小技巧,如果可能的话,我更喜欢一种干净的方法来检测断开连接。
c++ - TStringGrid OnDrawCell 问题
我在使用 C++ Buidler XE4 的 TStringGrid 上使用 Drawcell 时遇到问题。在我的 C++ 代码的一部分中,我将一些文本放在单元格中,如下行所示:
当我这样做时,在 DrawCell 事件中:
tmp 为“1”(当 ACol = x 且 ARow = y 时)。我确信在我的代码中没有任何地方替换“1”中的“1.0”。因此,如果有人可以向我解释发生了什么,我将非常优雅。
正如我实验的那样,它有时会起作用,有时会不起作用(重新编译时)。
C ++ Builder的较低层(它们是delphi的)有时会交换(或类似的东西)TStringGrid后面的StringGrid吗?
c++builder - 在构建完成之前调用构建后事件 RAD studio XE4
我是 RAD studio XE4 IDE 的新手,我只是想在构建后使用项目选项中的构建后事件命令字段运行一个 vbs 文件。
问题是,每次在项目中编译文件时都会执行 vb 脚本文件,尽管预期的行为是应该在整个项目的完整构建后调用它。尽管在 Embarcadero RAD 工作室 2010 中同样可以正常工作
以下是我在构建后事件命令字段中输入的命令:
在 Embarcadero RAD studio 2010 中,我在同一字段中使用了此命令(在上述命令失败时它工作正常):
c++ - 对于 Embarcadero C++ Builder XE4,std::ostringstream 线程安全吗?
我有一个应用程序在我的程序终止时抛出异常。我在头文件中有以下实用程序函数,用于将数字类型转换为std::strings
我用来避免我的代码被std::ostringstream
实例乱扔的
现在这段代码是从多个线程调用的,并且经常被调用,它偶尔会在 ostringstream 实现的深处抛出一个访问冲突异常。从我所看到的这段代码中,我看不出它不是线程安全的明显原因。
我在专门为 Linux (g++ 4.6.3) 开发的其他应用程序中使用了相同的函数,我从未见过代码抛出。
我知道永远不应该假设标准库中的线程安全,但我的功能非常基本。我的应用程序是作为 64 位应用程序构建的,因此它使用了此版本 XE4 附带的 C++11 编译器。
谁能告诉我是否有任何原因导致我的上述函数不安全,或者标准库的 Embarcadero C++ builder XE4 实现是否存在任何已知问题,这使得这样做不安全?