procedure TForm1.Button1Click(Sender: TObject);
var s: string[8] ;
begin
  s[0] := 'a' ;
  s[1] := 'b' ;
  s[2] := 'c' ;
  showmessage(s);
end;procedure TForm1.Button1Click(Sender: TObject);
var s: string[8] ;
begin
  s[0] := 'a' ;
  s[1] := 'b' ;
  s[2] := 'c' ;
  s[3] := 'd' ;
  showmessage(s);
end;
初识DELPHI,有点晕

解决方案 »

  1.   

    好问题。可能初学DELPHI的都会忽略这个里面的很多内涵。
      

  2.   

    var s: string[8] ;
    其内容是从s[1]开始的。
    s[0]是字符串长度值。
      

  3.   

    1、S[0] 等同于SetLength(S, Ord(S[0]) 在你的例子中相当于SetLength(S, 97)
    2、由于你没有对S做初始化,所以你的SHOWMESSAGE(S)会是这样的结果
       bcd+随机的乱字符,并且显示的字符串长度是97
      

  4.   

    不要把string 当char str[x];
      

  5.   

    var s: shortString ;
    begin
      s[0] := 'a' ;
      s[1] := 'b' ;
      showmessage(s) ;
      caption := inttostr(length(s)) ;
    end 结果相同  长度为97 Ord('a')String 结构:AllocationSize|RefCount|Length|B|C|D|#0
    ShortString 结构:|Length|B|C|D不管怎么样 S[0] 都是指向 Length ;还有没有类似的题目,最近在打基础;感觉写比较大的商务项目时,可以小心用变量,
    而不用去了解这些底层,
    直接用现有的类和结构,开发比较快速;
    因为这些结构也挺多,挺复杂的;如 Variant 变体类型 ;
    还有很多第三方控件要学习;没有做过整套的软件 ; 不知道接下来要怎么走 ...
      

  6.   

    我买的书是 D6 开发人员指南 是不是另外有一本D5 开发人员指南更好些;
    第二章 Object Pascal语言 就看了好几天了,还是挺难看懂的 ...
      

  7.   

    原来是这样呀,一直以为string[i]实际存放的是string[1..i]的内容。