【问题标题】:DecimalSeparator in SysUtils and System.SysUtilsSysUtils 和 System.SysUtils 中的 DecimalSeparator
【发布时间】:2014-09-26 09:14:03
【问题描述】:

我需要在 Delphi XE6 中找到 DecimalSeparator var SysUtils Delphi 7,我试图在 System.SysUtils 中找到,但没有成功。谁能告诉我在Delphi XE6哪里可以找到她?

在 Delphi 7 中,它位于 SysUtils.pas 单元中,第 618 行:

var 
   CurrencyString: string; 
   CurrencyFormat: Byte; 
   NegCurrFormat: Byte; 
   ThousandSeparator: Char; 
   DecimalSeparator: Char;

我需要这个变量来将 Delphi 7 的一个组件转换为 XE6

【问题讨论】:

标签: delphi components vcl


【解决方案1】:

我的错,首先我需要调用FormatSettings,然后我可以在Delphi XE6中使用DecimalSeparator

FormatSettings.DecimalSeparator

【讨论】:

  • 全局格式化变量在 XE 中已被弃用,最终为 removed in XE6
  • 存在全局变量 FormatSettings,以及您可以从全局变量中预期的所有问题。将此作为经验法则:一旦你FormatSettings,你可能做错了什么。
  • @Wouter van Nifterick。我同意 formatSetting 不是最好的艺术状态。那么你的解决方案是什么?不使用 FormatSetting 的最佳技术是什么?
  • @ffert2907:不要使用全局变量,而是填充 TFormatSettings 的本地实例,并显式传递它。全局函数一开始就不应该由 Borland 创建,因为任何函数都可以随时更改它。如果你更改它,谁知道你在影响什么,或者如果你使用它,谁知道它搞砸了。所以只要有可能就避免它......
【解决方案2】:
procedure ConfigureBrazilRegion;
var
  FormatBr: TFormatSettings;
begin
  // Create new setting and configure for the brazillian format
  FormatBr                     := TFormatSettings.Create;
  FormatBr.DecimalSeparator    := ',';
  FormatBr.ThousandSeparator   := '.';
  FormatBr.CurrencyDecimals    := 2;
  FormatBr.DateSeparator       := '/';
  FormatBr.ShortDateFormat     := 'dd/mm/yyyy';
  FormatBr.LongDateFormat      := 'dd/mm/yyyy';
  FormatBr.TimeSeparator       := ':';
  FormatBr.TimeAMString        := 'AM';
  FormatBr.TimePMString        := 'PM';
  FormatBr.ShortTimeFormat     := 'hh:nn';
  FormatBr.LongTimeFormat      := 'hh:nn:ss';
  FormatBr.CurrencyString      := 'R$';

  // Assign the App region settings to the newly created format
  System.SysUtils.FormatSettings := WFormatBr;
end;

【讨论】:

  • @user30478 描述就是问题,如果您仍有任何疑问,请先阅读并发表评论。
  • 谢谢。这是来自 kazip 2.0 演示的代码。它使用此分隔符,例如 - TS := SysUtils.ThousandSeparator;试试 SysUtils.ThousandSeparator := ' '; ...最后.. SysUtils.ThousandSeparator := TS;结尾;不知道如何使这个 D7 代码适用于 DXE5。
  • 嘿@user30478,再看一遍代码。希望你能理解cmets。此代码适用于 DXE5。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多