昨天听老师讲字符串变量s 的首位子存的是字符串的长度。
如:
var
  s:string;
begin
  s:='hao';
  label1.caption:=s[0];//编译错误[Error] Unit1.pas(34): Element 0 inaccessible - use 'Length' or 'SetLength'
end;怎么位置0 是不可见的了?

解决方案 »

  1.   

    被DELPHI编译器屏蔽了的,你可以用Length获得长度。
      

  2.   

    pinteger(integer(s)-4)^
    pinteger(integer(s)-8)^
    分别取得引用计数和长度delphi中string类型的真正存放数据是从string[1]开始的,在前面负偏移的地方分别存放的是长度和应用计数
      

  3.   

    同前面说的
    差不多这个意思,反正str[1]就是str的第一个字母就是了
      

  4.   

    不能直接访问s[0]
    http://www.cnblogs.com/del/archive/2008/03/03/1088984.html
      

  5.   

    使用copy函数可以读取第一个字符。
    var
    s:string;
    begin
    s:='hao';
    label1.caption:=copy(s,0,1);
    end;
      

  6.   

    现在还有Delphi的课?不错啊如果你有耐心的话,可以看看Delphi Language Guide。
      

  7.   

    现在还有Delphi的课?不错啊老版本D是用Str[0]取长度。
    后来的版本都是用Length(Str)取。如果你能把Str理解成 优化过的 cc:array [0.1024] of char; 就好理解了。
    会在0的位置添加长度,1开始之后添加每个char。
    或者说,没有String的情况下,让你用类的方式写一个管理 cc 结构
    你也会这么干的。