今天第一次用DELPHI写一个关于字符串相关的函数。使用了Edit.Text
发现使用TEdit.Text[下标]的形式,第0个字符等于 #0
而字符串实际的内容是从  Text[1]开始的想请教达人,只是VCL中从1开始,还是delphi的String类型就是从1开始保存数据的呢?

解决方案 »

  1.   

    VCL中的String下标是从1开始的。(在BCB和Delphi中都一样)
      

  2.   

    那string类型是不是从0开始?这些小的细节还真的不太曾注意过
      

  3.   

    String类型下标全部是从1开始;
    短字符串下标0代表字符串长度,由于一个字节表示长度,所以最长为255
    长字符串下标0,已经没什意义了
      

  4.   

    STL中的string(注意不是VCL中的String)下标是从0开始。
      

  5.   

    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