[正确就结贴]关于VCL中TEdit.Text的字符串是从下标1开始的吗?

dreamnyj 2007-04-02 09:06:52
今天第一次用DELPHI写一个关于字符串相关的函数。使用了Edit.Text
发现使用

TEdit.Text[下标]的形式,第0个字符等于 #0
而字符串实际的内容是从 Text[1]开始的

想请教达人,只是VCL中从1开始,还是delphi的String类型就是从1开始保存数据的呢?
...全文
237 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihuasoft 2007-04-02
  • 打赏
  • 举报
回复
String对象的内存结构是:

  变量名:Str(隐含的指针,即@Str[1])


┌──┬──┬──┬──┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬─┐
│????│Spac│Ref │Len │││││(字符序列)│││││#0│
└──┴──┴──┴──┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴─┘
????:不明,4字节。
Spac:Cardinal,4字节,分配的串空间大小。
Ref :Integer,4字节,引用记数。
Len :Cardinal,4字节,实际串长,即Length(Str)。

http://rabbitfox.blog.sohu.com/38253374.html
ccrun.com 2007-04-02
  • 打赏
  • 举报
回复
STL中的string(注意不是VCL中的String)下标是从0开始。
madyak 2007-04-02
  • 打赏
  • 举报
回复
String类型下标全部是从1开始;
短字符串下标0代表字符串长度,由于一个字节表示长度,所以最长为255
长字符串下标0,已经没什意义了
dreamnyj 2007-04-02
  • 打赏
  • 举报
回复
那string类型是不是从0开始?这些小的细节还真的不太曾注意过

ccrun.com 2007-04-02
  • 打赏
  • 举报
回复
VCL中的String下标是从1开始的。(在BCB和Delphi中都一样)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧