lok*_*oki 9 delphi delphi-10.3-rio
在system.sysutils.pas
里约热内卢,他们添加了以下说明:
var intPart: String;
... IntPart.Chars[length(IntPart)] in ['1','3','5','7','9'] ...
Run Code Online (Sandbox Code Playgroud)
但是据我所知,s.Chars [xx]始终是从零开始的字符串,所以这样做IntPart.Chars[length(IntPart)] in ['1','3','5','7','9']
总是会超出界限吗?
绝对不能写
... IntPart.Chars[length(IntPart)-1] in ['1','3','5','7','9'] ...
Run Code Online (Sandbox Code Playgroud)
还是我想念什么?
LU *_* RD 10
但据我所知,s.Chars [xx]始终是从零开始的字符串
是TStringHelper
的,无论编译器设置如何({$ ZEROBASEDSTRINGS ON / OFF}),例程均以基于零的字符串形式编写。请参阅SysUtils.TStringHelper.Chars。
所以在['1','3','5','7','9']中执行IntPart.Chars [length(IntPart)]总是会超出边界吗?
那是正确的。应该是的Length(IntPart)-1
。
报告为: SysUtils.InternalTextToCurrency访问超出范围的字符串
更新:在Delphi 10.3.3 Rio中修复。
此外,当范围检查打开时,IntPart.Chars[length(IntPart)]
应该引发异常。这也是(中的TStringHelpers.Chars
)错误。
报告为: 当索引超出范围时,TStringHelper.Chars不会发出范围错误
归档时间: |
|
查看次数: |
201 次 |
最近记录: |