【问题标题】:TDateTime data typeTDateTime 数据类型
【发布时间】:2012-09-22 08:06:04
【问题描述】:

我一直在使用 C++ Builder 开发一些类。我一直在通过包含“vcl.h”来使用 TDateTime 数据类型。这只是 C++ Builder 独有的吗?

我问这个是因为我现在使用 Microsoft Visual Studio C++ 并且收到“TDateTime is undefined error”。

如何在 Visual Studio 中使用这种类型?

谢谢

【问题讨论】:

  • TDateTime 肯定不是标准 C++ 库的一部分。
  • 如何将其添加到我的项目中?
  • 我不知道您是否可以自行安装它,但您会对开源和/或 C++ 标准替代品感兴趣吗?
  • 是的,我会的。我要试试流血吗?基本上,我想在另一个 C++ 开发 IDE 中使用我的 C++ Builder 代码(使用 TDateTime 数据类型)。我的评估版明天就用完了……
  • 我在答案中添加了一些建议。不幸的是,我不认为它们提供了一个简单的替代品,但是通过一些工作你可以获得你需要的功能。

标签: c++ visual-studio-2012 tdatetime


【解决方案1】:

我建议查看boost.datetime,如果您可以访问 C++11 支持,<chrono> 标头中的standard C++ time and time duration utilities 可用。使用其中任何一种方法的一个优点是它们是可移植的,因此您不必受限于给定的编译器或开发环境。

【讨论】:

  • 事情是这样的。我已经编写了数百行代码,它们使用了 TDateTime 对象。我不想用不同的数据类型重写所有内容...
  • @user1690531 在将特定于供应商的代码从一个编译器/平台迁移到另一个编译器/平台时,您需要期待这种情况。 (因此存在“便携式”库并且通常很受欢迎的原因)。重写通常是最好的选择;唯一的其他(更糟)替代方法是在 Visual C++ 中创建自己的名为 TDateTime 的类型,该类型采用 TDateTime 接口,但充当您选择的另一个日期/时间库的包装器
  • 我可以只包含 C++ Builder 使用的库吗?
  • @user1690531 回答这个问题的最佳方法是亲自尝试。正如我在回答中提到的——大部分 VCL 都是围绕 Borland 特定的扩展构建的,并使用 delphi 代码; Visual C++ 对这些一无所知,所以这样做可能需要您跳过很多圈子。
  • @user1690531 它很可能是一个专有库,但我不能肯定地说。我真的建议使用便携式解决方案推出您自己的日期时间代码。
【解决方案2】:

Borland 的大部分可视化组件库都是围绕它自己的编译器特定的扩展和 delphi 代码构建的。我非常怀疑您是否可以轻松地让它在任何其他编译器下工作。

幸运的是,有很多选择。如果您使用的是 Visual C++,那么您可以使用 Microsoft 的日期/时间库: http://msdn.microsoft.com/en-us/library/6ahxxcsz%28v=vs.100%29.aspx

还有来自 Boost 和 QT 的可移植库,可以在任何现代 C++ 编译器下运行

【讨论】:

  • 1) Borland 现在是 Embarcadero 2) 我会强烈关注 TDateTime 数据类型的开始日期以及它是否与您建议的匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
相关资源
最近更新 更多