我有一段程序:
var
dynarr1, dynarr2: array of integer;
i: Integer;
begin
SetLength(dynarr1,100);
i:= Low(dynarr1);
for i:= Low(dynarr1) to High(dynarr1) do
dynarr1[i]:= i; dynarr2:= dynarr1;
showmessge(InttoStr(High(dynarr2)));
end;编译时在dynarr2:= dynarr1的地方出错,提示:Incompatible types 为什么呢?动态数组不是一块内存吗? dynarr2:= dynarr1的作用不是相当于dynarr2指向dynarr1的指针吗?请各位大虾详细说明一下动态数组的使用问题!!!!
var
dynarr1, dynarr2: array of integer;
i: Integer;
begin
SetLength(dynarr1,100);
i:= Low(dynarr1);
for i:= Low(dynarr1) to High(dynarr1) do
dynarr1[i]:= i; dynarr2:= dynarr1;
showmessge(InttoStr(High(dynarr2)));
end;编译时在dynarr2:= dynarr1的地方出错,提示:Incompatible types 为什么呢?动态数组不是一块内存吗? dynarr2:= dynarr1的作用不是相当于dynarr2指向dynarr1的指针吗?请各位大虾详细说明一下动态数组的使用问题!!!!
解决方案 »
- DELPHI 中 DBGrid 如何用代码选择单元
- 请教! ImageList.GetIcon 获取一个图标,该图标用SaveToFile保存后只有256色的原因。
- 关于TreeView与数据库相关的问题。
- ora文件操作问题
- delphi如何向外部程序传递参数
- 高手赐教!
- 最近我接到一个中小企业的信息管理系统的定单临时需要4名程序员协作开发,有意者请回复或mail to me [email protected]
- 各位兄弟哪儿有DELHPI 5.0 的升级程序??????????????????????拜托!!!!!!!!
- 给即将离去的朋友
- 请问如何在Delphi5中编程使用扫描仪和数码相机?<很急的!!>
- 很不明白,delphi +ado + access 报的 Invalid variant type conversion 错误,
- TClientDataSet中某个字段的ProviderFlags有什么用?怎么用???
不过要谢谢各位了!
如果是,为什么在上述代码段后添加了
SetLength(dynarr1,12);
ShowMessage(High(dynarr2));显示的数据仍然是9,而不是11?
SetLength(dynarr2,12);
dynarr1:= dynarr2;
ShowMessage(inttostr(High(dynarr1)));// 结果为11!应该分配完内存再赋值,否则SetLength(dynarr2,3);
SetLength(dynarr1,6);
dynarr1:= dynarr2;
SetLength(dynarr2,12);
ShowMessage(inttostr(High(dynarr1)));// 结果为2!
就什么问题都没有了!