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

Google
Delphi之数组
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 15:58:02
;  j:=K;//计数器应该加1,因为j的指针指向了他,使用者又多了一个
          showmessage('现在计数器:'+Inttostr(MyAnsiString^.ReferencCount));
          showmessage('长度为:'+Inttostr(MyAnsiString^.Length));
          SetLength(j,100);//计数器应该减1,因为j的指针指不再指向他,使用者少了一个
          showmessage('现在计数器:'+Inttostr(MyAnsiString^.ReferencCount));
          showmessage('长度为:'+Inttostr(MyAnsiString^.Length));
          SetLength(k,100);//k内存被重新分配,那么这片数据的计数器再减去一个,即为0。
          //然而因没有使用者该内存区域已经被自动释放所以这里再去读数的话就是一些随机数据
          showmessage('现在计数器:'+Inttostr(MyAnsiString^.ReferencCount));
          showmessage('长度为:'+Inttostr(MyAnsiString^.Length));
        end;
       理论上来说能模拟实现AnsiString的一些功能,通过这些可以看到AnsiString不过是动态数组的一种形式。
     3.WideString:宽字符串,由WideChar组成,以Nil结尾.
       Type
        TWideString=record
           allocSiz: LongWord;//分配的大小
           Length:LongWord;         //字符串长度
           Data:array[1..(Length+1)] of WideChar;
        end;
        有结构可以看出,WideString和AnsiString很类似,但是他没有回收机制。不能进行生存期自管理。
        但是在处理上还是较CC++效率高上许多。     
     4.Pchar:与其说成是字符串到不如说他是指针更准确一些。
        Type
         TPchar=^Char;
       Pchar是为了和C++兼容的实际上它是指向字符的指针。从这个字符开始到后面第一个NULL字符为止都是
       Pchar字符串的内容,也就是说PChar是它内容的首地址,因为Pchar并非结构而是一种指针所以Pchar的
       下限是0.
       var
         A:Pchar;
       ...
         A:='1234567890';
         A[0]:='a';//这一句是合法的
      
       看看如下代码就明白了:
        var
          k:array of char;
          p:Pchar;
          i:Integer;
        begin
          SetLength(k,20);
          FillMemory(@k[0],Length(k),Byte('A'));
          i:=3;  //i只要比20小,大于等于0,随你调整看看不同的结果。
          k[i]:=#0;
          p:=@k[0];
     &nbs

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

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

阅读排行

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

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

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