动态数组可不可以多次SetLength?

nonlyli 2004-11-20 10:27:02
做了个小程序,有时动态数组不够用了,想按程序运行来动态添加些,却会出现异常。
只要赋值了,就不能再重新用SetLength了。

是我做错了还是没有这种功能?
...全文
202 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
surpassable 2004-11-22
  • 打赏
  • 举报
回复
up~~~~~~~
nonlyli 2004-11-20
  • 打赏
  • 举报
回复
知道了。可能是我先前把动态数组的Index当成从1开始了。
nonlyli 2004-11-20
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
tArray:Array of Integer;
I:Integer;
begin
SetLength(tArray,10);
For I:=0 to Length(tArray)-1 do
tArray[I]:=I;

For I:=0 to Length(tArray)-1 do
ListBox1.Items.Add(IntToStr(tArray[I]));

SetLength(tArray,1000);

For I:=0 to Length(tArray)-1 do
tArray[I]:=I;

For I:=0 to Length(tArray)-1 do
ListBox1.Items.Add(IntToStr(tArray[I]));
end;

咋这次又对了呢?我再试试。
fj218 2004-11-20
  • 打赏
  • 举报
回复
动态数组可以动态通过Setlength进行扩充或减少
nonlyli 2004-11-20
  • 打赏
  • 举报
回复
测试做过了。就是说有没有办法解决。
nonlyli 2004-11-20
  • 打赏
  • 举报
回复
那如何简单地实现动态“按需扩充”动态数组呢?
王集鹄 2004-11-20
  • 打赏
  • 举报
回复
//做个测试不比发贴问来得明白?~~
var
A: array of Integer;
begin
SetLength(A, 1);
A[0] := 1234567;
SetLength(A, 2);
ShowMessage(IntToStr(A[0]));
end;
todouwang 2004-11-20
  • 打赏
  • 举报
回复
setlonth后数组的内存分配已固定,应该不能再次setlongth 了

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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