[正确就结贴]关于VCL中TEdit.Text的字符串是从下标1开始的吗?解决方法
[正确就结贴]关于VCL中TEdit.Text的字符串是从下标1开始的吗?
今天第一次用DELPHI写一个关于字符串相关的函数。使用了Edit.Text
发现使用
TEdit.Text[下标]的形式,第0个字符等于 #0
而字符串实际的内容是从 Text[1]开始的
想请教达人,只是VCL中从1开始,还是delphi的String类型就是从1开始保存数据的呢?
------解决方案--------------------
STL中的string(注意不是VCL中的String)下标是从0开始。
------解决方案--------------------
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
今天第一次用DELPHI写一个关于字符串相关的函数。使用了Edit.Text
发现使用
TEdit.Text[下标]的形式,第0个字符等于 #0
而字符串实际的内容是从 Text[1]开始的
想请教达人,只是VCL中从1开始,还是delphi的String类型就是从1开始保存数据的呢?
------解决方案--------------------
STL中的string(注意不是VCL中的String)下标是从0开始。
------解决方案--------------------
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