Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays “创造和获取价值”;数组结构的数组";_Arrays_Delphi_Delphi Xe2 - Fatal编程技术网

Arrays “创造和获取价值”;数组结构的数组";

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

我正在尝试创建一个数组的数组来获取数据(我以前添加过),将其称为“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;
  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对象?您仍然没有显示所有相关代码。“它在这里崩溃”一点也不好。你需要提供一个完整的错误消息。为了清晰起见,也值得“提取”外部结构。好的,我已经再次写了第一篇文章。。但是仍然被窃听:(:谢谢大卫,你完全正确,不记得了!!!谢谢你们帮助我