您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Delphi >> 正文

Google
Delphi之数组
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 15:58:02
p;   A := B;
     即可对数组进行赋值;在动态数组中就要倍加小心,请看
     var
       A, B: array of Integer;
     begin
       Setlength(A, 10);
       SetLength(B, 10);
       B[1] := 50;
       A := B;
       B[1] := 100;        
     end; 
     a[1]是多少呢?按照常理A[1]的值应该是附值前的50,但恰恰相反A[1]的值是附值后B[1]再次被赋的值,
     100动态数组中A := B;仅仅是将动态数组A 的指针指向动态数组B,而并不是像我们希望的那样为A开辟一
     块空间。如果非要为A开辟一块空间就要用Copy来复制B的数据。
     AnsiString也是动态数组,所以同样的情况也存在于String类型。
特殊的数组:
     本来字符串想单独说一说,但是却因为它具有太多的动态数组特性所以不单独说了。
     再一个,这里的代码和说的以后你很可能是用不到的,但是能加深你对ObjectPascal的理解。
     在设计时你会知道它是如何工作的,通过这些你会更有效率的使用它。
     大多数字符串与其说是数组倒不如说他是个结构。但是我们用他的数组特性更多一些。
     1.ShorString:是为了与老的Pascal兼容而保留的类型。最大255个字符。
       Type
         TShortString
           Length:Byte;
           Data:array[1..Length] of Char;
         end;
     从结构上可以看出ShortString最大只能保存255个字符。我们可以做个实验
       var
         k:ShortString;
       begin
         k:='I am a Delphi fan!';
         k[0]:=Char(13);//k.Length被置为13
         showmessage(k);
       end;
       ///两种方法效果相同
       var
         k:ShortString;
         p:^Byte;
       begin
         k:='I am a Delphi fan!';
         p:=@k[1];
         Dec(p,1);
         p^:=13;//k.Length被置为13
         showmessage(k);
       end;
      运行一下看看会出什么结果,呵呵。
      为什么Short的数组下限是0呢?想一想Byte和Char的关系我不想多说.
     2.AnsiString:标准的字符串,以Nil结尾。
       Type
        TAnsiString=record
           allocSiz: LongWord;//分配的大小
           ReferencCount:LongWord;       //引用次数
           Length:LongWord;         //字符串长度
           Data:array[1..(Length+1)] of AnsiChar;
      &

上一页  [1] [2] [3] [4] [5] [6] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号