怎样把一个动态数组的内容清空?
怎样把一个动态数组的内容清空?
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




