0

我需要修改现有应用程序以获得多语言支持。这意味着使用相同的英文版数据库(Firebird),我的客户想在中国销售该应用程序。

应用程序是用 Delphi 7 编写的,用于访问数据库的组件来自FibPlus套件。

这个问题开始,据我所知,使用 .AsDate、.AsDateTime 等例程正在使用系统中的区域设置转换数据库中的数据。这意味着我将使用当前格式设置向最终用户显示数据,对吗?

在数据库中保存数据时,数据库连接器应正确(使用当前格式设置)保存数据库中的数据。或者,我错了?

所以,基本上我的问题是:我应该如何管理日期时间、千位、小数等分隔符,以便向最终用户显示/保存正确的来自/进入数据库的数据?

4

3 回答 3

2

AsDateTime等不要使用区域设置进行转换,因为它们根本不转换。就您的应用程序而言,数据库读取和写入TDateTime值,而不是字符串。只要您TDateTime值与strings 相互转换,就没有问题。标准编辑控件将使用最终用户的区域设置显示它们。只有当您自己执行转换时,您才需要查看FormatSettings.

于 2012-07-23T09:31:14.403 回答
-1

您会考虑数据库和 FibPlus 的连接字符串中的文本数据类型。这样就可以正确存储/检索非英文字母。特别是如果以后的非 Delphi 程序需要这样的数据库。

于 2012-07-23T14:43:17.643 回答
-1

这取决于用于在数据库中存储日期/时间值的格式。如果您需要在保存之前将日期/时间转换为字符串,您应该选择一种内部格式来保存这些值。在我们的应用程序中,我们更喜欢“yyyy-MM-dd hh:mm:ss”这样的格式,因为这种格式消除了任何歧义。此外,我建议在保存到数据库之前将所有日期/时间值调整为一个时区(例如 GMT),然后在显示给用户之前将它们修改回来。

于 2012-07-23T16:10:32.983 回答