Delphi 是否有一种方法(无需显式编码)使用度量前缀显示数字?

Delphi 是否有一种方法(无需显式编码)使用度量前缀显示数字?,delphi,string-formatting,right-to-left,Delphi,String Formatting,Right To Left,这个问题与在Delphi应用程序中自动使用某些windows资源管理器功能有关 在Delphi中是否有一种方法可以自动使用metrix前缀格式化整数?以某种方式自动获得windows资源管理器提供的结果?我的意思是自动将1024转换为1.0 K 比如说 FormatMetric('FileSize = %d', [26112], 1,'B') // where the third parameter is the number of decimal digits // and the fourt

这个问题与在Delphi应用程序中自动使用某些windows资源管理器功能有关

在Delphi中是否有一种方法可以自动使用metrix前缀格式化整数?以某种方式自动获得windows资源管理器提供的结果?我的意思是自动将1024转换为1.0 K

比如说

FormatMetric('FileSize = %d', [26112], 1,'B')
// where the third parameter is the number of decimal digits
// and the fourth is the string that is appended
会回来的

25.5 KB

当然,我可以对其进行编码,但是RTL中是否有类似的内容?

您需要Windows API调用StrFormatByteSizeA


请参阅msdn:

KB或KiB?1024不是公制前缀,我指的是K、M、G、T、P(表示千、兆、千兆、兆、兆、千兆、千兆、千兆)。我指的是文件系统显示这些值的方式。谢谢,这个API正是我所需要的。我可以想象没有Delphi包装器,但它是不需要的。在`ShLwAPI.pas中,
StrFormatByteSizeA
StrFormatByteSizeW
都有Delphi声明;像往常一样把它添加到你的uses子句中。是的,我刚才发现了这个。无论如何,即使使用StrFormatByteSizeW,我也无法获得大于2GB的值。为什么会这样?@Ken White:Delphi 7中不存在该单位,所以我不知道。@user193655:StrFormatByteSizeW适用于大于2GB的值。为什么它对你不起作用?你有错误吗?