Arrays “创造和获取价值”;数组结构的数组";
我正在尝试创建一个数组的数组来获取数据(我以前添加过),将其称为“GameMap[I,j,k].Items[m].Index”或“GameMap[I,j,k].Count” 我在delphi中的类型部分如下所示:Arrays “创造和获取价值”;数组结构的数组";,arrays,delphi,delphi-xe2,Arrays,Delphi,Delphi Xe2,我正在尝试创建一个数组的数组来获取数据(我以前添加过),将其称为“GameMap[I,j,k].Items[m].Index”或“GameMap[I,j,k].Count” 我在delphi中的类型部分如下所示: type TItemRec = record Index: Integer; Volume: Integer; Count: Integer; Id: string; end; TMApRec = record ID: LongWord; Count: integer
type
TItemRec = record
Index: Integer;
Volume: Integer;
Count: Integer;
Id: string;
end;
TMApRec = record
ID: LongWord;
Count: integer;
Order1: integer;
Order2: integer;
Order3: integer;
Order4: integer;
Order5: integer;
Order6: integer;
Order7: integer;
Order8: integer;
Order9: integer;
Order10: integer;
Items: array[0..9] of TItemRec;
end;
TMap = class
GameMap : array[0..8,0..14,0..$12] of TMapRec;
var
Map: TMap;
begin
Map.Update;
end;
var
Map: TMap;
begin
Map := TMap.Create;
try
Map.Update;
finally
Map.Free;
end;
end;
例如,如果我现在这样做:
procedure TMap.Update;
var
i,j,k,m: integer;
begin
i:=0;
while i < 8 do
begin
j:=0;
while j < 14 do
begin
k:=0;
while k < $12 do
begin
m:= 0;
while m < 10 do
begin
showmessage('asdf');
GameMap[i,j,k].Items[m].Id:= (inttostr(i)+' '+inttostr(j)+' '+inttostr(k)+' '+inttostr(m));
showmessage((GameMap[i,j,k].Items[m].Id));
inc(m);
end;
inc(k);
end;
inc(j);
end;
inc(i);
end;
程序TMap.Update;
变量
i、 j,k,m:整数;
开始
i:=0;
而我不到8岁
开始
j:=0;
当j<14时
开始
k:=0;
而k<12美元
开始
m:=0;
当m<10时
开始
showmessage('asdf');
游戏地图[i,j,k]。物品[m]。Id:=(inttostr(i)+''+inttostr(j)+'+inttostr(k)+'+inttostr(m));
showmessage((游戏地图[i,j,k].Items[m].Id));
公司(m);
结束;
公司(k),;
结束;
公司(j);
结束;
公司(一);
结束;
它将只显示第一条showmessage('asdf'),但随后会崩溃
这里有完整的代码,如果你想突出显示的话
再次感谢大家抽出时间首先为您的
项目
声明一个类型
:
type
TItemRec = record
Index: Integer;
Volume: Integer;
Count: Integer;
Id: Integer;
end;
现在在您的游戏地图中使用该类型:
GameMap : array[0..8,0..14,0..$12] of record
ID: LongWord;
Count: integer;
Order1: integer;
Order2: integer;
Order3: integer;
Order4: integer;
Order5: integer;
Order6: integer;
Order7: integer;
Order8: integer;
Order9: integer;
Order10: integer;
Items: array[0..9] of TItemRec;
end;
代码产生运行时错误的唯一方法是未能实例化TMap
的实例
我怀疑调用Update
的代码如下所示:
type
TItemRec = record
Index: Integer;
Volume: Integer;
Count: Integer;
Id: string;
end;
TMApRec = record
ID: LongWord;
Count: integer;
Order1: integer;
Order2: integer;
Order3: integer;
Order4: integer;
Order5: integer;
Order6: integer;
Order7: integer;
Order8: integer;
Order9: integer;
Order10: integer;
Items: array[0..9] of TItemRec;
end;
TMap = class
GameMap : array[0..8,0..14,0..$12] of TMapRec;
var
Map: TMap;
begin
Map.Update;
end;
var
Map: TMap;
begin
Map := TMap.Create;
try
Map.Update;
finally
Map.Free;
end;
end;
这将失败,因为Map
未初始化。像这样修复它:
type
TItemRec = record
Index: Integer;
Volume: Integer;
Count: Integer;
Id: string;
end;
TMApRec = record
ID: LongWord;
Count: integer;
Order1: integer;
Order2: integer;
Order3: integer;
Order4: integer;
Order5: integer;
Order6: integer;
Order7: integer;
Order8: integer;
Order9: integer;
Order10: integer;
Items: array[0..9] of TItemRec;
end;
TMap = class
GameMap : array[0..8,0..14,0..$12] of TMapRec;
var
Map: TMap;
begin
Map.Update;
end;
var
Map: TMap;
begin
Map := TMap.Create;
try
Map.Update;
finally
Map.Free;
end;
end;
作为一条更一般的建议,我强烈建议您阅读如何创建问题解决方案。您确实需要花更多的精力来描述问题。“它不工作的权利,通常它的错误”和“不允许我采取”是没有真正的帮助;除了你,他们对任何人都没有任何意义,因为我们看不到你的屏幕,也看不懂你的心思。请记住,除了你在这里告诉我们的以外,我们没有关于你的问题的任何信息;如果你不清楚地解释这个问题,就很难找到解决方法。也许你忘了结束,换句话说,它对我很有效,例如:GameMap[0,1,$2]。Items[3]。Id:=4代码>请重新格式化您的帖子以正确显示代码。请检查第一篇帖子,我已经重新编写了,您是否创建了TMap对象?您仍然没有显示所有相关代码。“它在这里崩溃”一点也不好。你需要提供一个完整的错误消息。为了清晰起见,也值得“提取”外部结构。好的,我已经再次写了第一篇文章。。但是仍然被窃听:(:谢谢大卫,你完全正确,不记得了!!!谢谢你们帮助我