CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

怎样把一个动态数组的内容清空?

楼主feiyunxiaozi()2004-08-01 11:48:23 在 Delphi / VCL组件开发及应用 提问

怎样把一个动态数组的内容清空?  
  aryTest   :   array   of   String;    
  SetLength(aryTest,100);  
  我给数组赋值后,怎样才能清空数组呢? 问题点数:40、回复次数:17Top

1 楼feiyunxiaozi()回复于 2004-08-01 11:55:17 得分 0

帮自己顶一下Top

2 楼jinjazz(近身剪)回复于 2004-08-01 11:56:28 得分 10

fillchar(arytest,100*255,0);Top

3 楼zswangII(伴水清清)(一贴不灌,何以灌天下?)回复于 2004-08-01 12:00:31 得分 20

var  
      aryTest:   array   of   String;  
      I:   Integer;  
  begin  
      SetLength(aryTest,   100);  
      for   I   :=   Low(aryTest)   to   High(aryTest)   do  
          aryTest[I]   :=   '我爱北京天安门';  
   
      FillChar(aryTest[Low(aryTest)],  
          Length(aryTest)   *   SizeOf(aryTest[Low(aryTest)]),   0);  
   
      Caption   :=   aryTest[99];  
  end;Top

4 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2004-08-01 12:05:17 得分 0

o   FillChar   怎么这么像   memset  
   
  还有   ZeroMemoryTop

5 楼anbangs(大邦)回复于 2004-08-01 13:34:46 得分 0

FillCharTop

6 楼dacong(大聪)回复于 2004-08-01 13:35:37 得分 0

aryTest   :   array   of   String;    
  SetLength(aryTest,100);  
  //处理  
  .........  
  //清空  
  SetLength(aryTest,0);  
  SetLength(aryTest,100);Top

7 楼lxpbuaa(桂枝香在故国晚秋)回复于 2004-08-01 13:39:34 得分 0

SetLength(aryTest,   0);  
  SetLength(aryTest,   100);  
   
  ————————————————————————————————————  
  宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。  
  ————————————————————————————————————Top

8 楼surpassable()回复于 2004-11-22 10:19:50 得分 0

up~~~~~~~~Top

9 楼halfdream(哈欠)回复于 2004-11-22 12:26:36 得分 0

 
   
  如果动态数组元素是CHAR或其它基本类型,处理可以  
  aryTest   :   array   of   CHAR;    
  SetLength(aryTest,100);  
  fillchar(PCHAR(arytest)^,100,SIZEOF(CHAR));  
   
  但动态数组元素是STRING型,情况就麻烦多了..  
  比较保险就是伴水那样...  
   
  我没试过,不知道这样可不可以..  
  aryTest   :   array   of   String;    
  SetLength(aryTest,100);  
  fillchar(pstring(arytest)^,100,100*4);  
   
  Top

10 楼halfdream(哈欠)回复于 2004-11-22 12:27:18 得分 10

fillchar(pstring(arytest)^,100*4,0);  
  Top

11 楼Rail100(杀神之狙)(能忘掉结果,未能忘记遇上)回复于 2004-11-22 12:54:49 得分 0

请问,在效率上,清空一个动态数组和释放动态数组再新建一个,那个效率高或者速度快?Top

12 楼zeroxing(胸无半点墨,腰有万贯财;此般理想高,怎奈做不到!)回复于 2004-11-22 13:02:00 得分 0

SetLength(aryTest,   0);  
  或者aryTest   :=   nil;  
   
  都可以清空。  
  如果ary是string型的,这也没有问题。因为Delphi里面的String是有引用记数的,没有引用了,自动释放内存。  
   
  如果ary包含new或者getMem的东西,则预先需要作dispose或者freeMem的操作,否则内存会泄露。Top

13 楼lovefox_zoe(爱情狐狸)回复于 2004-11-23 12:50:00 得分 0

非常简单的,setlength的帮助里面有说  
   
  When   S   is   a   dynamic   array   of   types   that   must   be   initialized,   newly   allocated   space   is   set   to   0   or   nil.  
   
  只要把动态数组赋值为nil或者0Top

14 楼guoqing89383859(国庆)回复于 2004-11-23 13:25:08 得分 0

我觉得用ZeroMemory比较好Top

15 楼kuki84(天道酬勤)回复于 2004-11-23 14:06:30 得分 0

直接SetLength(aryTest,   0);就好了,或zeromemoryTop

16 楼redmoon_line(夕晨浪子)回复于 2004-11-23 15:51:16 得分 0

SetLength(aryTest,0);  
  就可以了!  
  Top

17 楼sdqhlyf(彩波)回复于 2005-07-15 14:44:43 得分 0

gzTop

相关问题

  • 如何将数组内容清空
  • 菜鸟级问题:数组内容可以清空吗?
  • 动态数组??????
  • 动态数组
  • 动态数组
  • 数组如何清空啊?
  • 如何清空数组?
  • aa[]数组的清空
  • 如何清空动态数组,并将其长度变为刚定义未设置setlength()时的长度?
  • 动态数组CArray

关键词

  • arytest
  • setlength
  • 清空
  • 动态数组
  • fillchar
  • nil
  • array
  • low
  • char

得分解答快速导航

  • 帖主:feiyunxiaozi
  • jinjazz
  • zswangII
  • halfdream

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo