delphi动态数组深度问题???

risingsoft 2006-06-29 02:19:22
TDynArray=array of integer;

procedure TForm1.BitBtn2Click(Sender: TObject);


var
fDynArray: TDynArray;
i:Integer;
lbErr:boolean;
begin
setLength(fDynArray,8);
for i := low(fDynArray) to high(fDynArray) do
begin
fDynArray[i] := i;
end;
ZeroMemory(@fDynArray[low(fDynArray)],High(fDynArray)+1); //POS1
//ZeroMemory(fDynArray,High(fDynArray)+1); //POS2

lbErr := false;
for i := low(fDynArray) to high(fDynArray) do
begin
if fDynArray[i]>0 then
begin
lbErr := true;
break;
end;
end;
if lbErr then
ShowMessage('Has data')
else
ShowMessage('Not has data');
end;

为什么无论用POS1或POS2方式都清0不了此一维动态数组?难道非要一个个用笨办法写值清0
...全文
342 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
risingsoft 2006-06-29
  • 打赏
  • 举报
回复
好啊。明天去公司看看效果。能行吗?
liangyong007a 2006-06-29
  • 打赏
  • 举报
回复
FillChar(@fDynArray[low(fDynArray)],(High(fDynArray)-Low(fDynArray) + 1)*SizeOf(Integer)), 0);
ysai 2006-06-29
  • 打赏
  • 举报
回复
ZeroMemory(@fDynArray[low(fDynArray)],(High(fDynArray)-Low(fDynArray) + 1)*SizeOf(Integer));
risingsoft 2006-06-29
  • 打赏
  • 举报
回复
NONO。。我没说清楚。

我这个例子是测试的。实际上我用的是一个全局的数组。在程序运行过程中一直存在。不能nil,也不能set为0,因为其他地方可能正在使用,我只是清0
liangyong007a 2006-06-29
  • 打赏
  • 举报
回复
setLength(fDynArray,0);
neatrain 2006-06-29
  • 打赏
  • 举报
回复
试试 fDynArray:=nil;
terence4444 2006-06-29
  • 打赏
  • 举报
回复
试试FreeAndNil()

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧