var
  W1: String;
  W2: array[0..13] of ansichar;
begin
  W1 := 'This is string';
  W2 := 'This is string';
end;请问W1与W2有哪些不同呢?

解决方案 »

  1.   

    string是delphi自动管理内存的类型。字符数组不是。在调用WinAPI时候,string需要做强制类型转换。
    其他没有什么区别。
      

  2.   

    可W1[1]为什么跟W2[1]相同啊,更让人想不通的是W1[0]根本没有啊
      

  3.   

    同意 chechy(简简单单的活)
      

  4.   

    string 类型与 c里面 \0结尾的字符创不同,平便我们操作的都是 从1开始的string, 其实也是从0开始,只不过这个[0]被定义为别的了,就是这字符串的长度。
    短字符串 这个 [0]是一个字节,这意味着它最长只能描述 255字节的字符串,
    长字符串这个 [0]是4字节,但受win32体系限制,他最多能存储 2G的数据。由于这个特点,当想得到一个字符串的长度的时候他只需要看他的[0]就行了,这个操作要远远快于c的扫描整个字符串遇到 \0的办法。
    而且 pascal字符串还能存储 \0这个特殊字符,虽然它本身没什么意义。另外,对于存储unicode 字符串string 再次体现出来优势,而c,必须要采用\0\0两个\0来表示结束。
      

  5.   

    在delphi中 string的[0]内保存的是字符串的长度
    w2[0]中保存的是w2的第一个字符