首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >零基字符串

零基字符串
EN

Stack Overflow用户
提问于 2019-04-30 11:34:09
回答 1查看 468关注 0票数 8

system.sysutils.pas,在里约,他们添加了这样的指令:

代码语言:javascript
运行
复制
var intPart: String;

... IntPart.Chars[length(IntPart)] in ['1','3','5','7','9'] ...

但据我所知,s.Charsxx总是以零为基础的字符串,所以做IntPart.Chars[length(IntPart)] in ['1','3','5','7','9']总是会离开边界

它不能被写成

代码语言:javascript
运行
复制
... IntPart.Chars[length(IntPart)-1] in ['1','3','5','7','9'] ...

还是我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 14:28:28

但据我所知,s.Charsxx将始终是基于零的字符串。

是的,不管编译器设置({ TStringHelper ON/OFF}),TStringHelper例程都是以零为基础在字符串上操作的。见SysUtils.TStringHelper.Chars

那么,在'1','3','5','7','9‘中做IntPart.Charslength(IntPart)总是会超出边界吗?

这是正确的。应该是Length(IntPart)-1

报道为: SysUtils.InternalTextToCurrency访问超出界限的字符串

更新:修复在德尔菲10.3.3里约。

此外,当范围检查打开时,IntPart.Chars[length(IntPart)]应该会引发异常。这也是bug (在TStringHelpers.Chars中)。

报道为: 当索引超出范围时,TStringHelper.Chars不会发出范围错误。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55920026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档