J
jaysuper
Unregistered / Unconfirmed
GUEST, unregistred user!
哪位有,TList的中文祥解资料,帮助中的英文理解的不是很明确,或者有例子也可,最好加上说明,比如Capacity和Count是如何联系的,又如何时用pack,delete和remove 又有什么不同?可在线交流QQ:29599652 (加入时说明关于d7)
小弟在开发gis时碰到的问题:
运行环境:xp,d7.
函数说明:DoubleobjectCombinationOneObject 把列表中的两个object合并成一个(先删除指定的两个,把合并后的再加入到列表。用Tlist的delete删除用add加入)
ComBinArr作用为合并数组没有太大的关系吧
for i:= 0 to FLayerDataList.Count -1 do
begin
for j:=0 to FlayerDataList.RoadCount -1 do
begin
TmpRoad1 := FLayerDataList.RoadObject[j];
for k:=0 to FLayerDataList.RoadCount -1 do
begin
TmpRoad2 := FLayerDataList.RoadObject[k];
{**************在上面的这句出错,第一次删除的时候不会出错,删除后roadCount就会少一(删除了两个加入了一个)第二次的时候运行到上面这句k值会一直会检测到河roadcount的值相等,那么取tmpRoad2的值时候就会越界,不知道为什么? 是删除的方法不对?还是还需要什么操作?例如:开始 roadcount=107
第一次删完后:roadcount =106
此时k可以取到106,从列表取值得时候就会越界}
if (j<>k) and (TmpRoad1.sName = TmpRoad2.sName)and (TmpRoad1.sName<>'') then
begin
if (TNavRoadData(FNavRoadDataList[j]).FNode=TNavRoadData(FNavRoadDataList[k]).TNode) then
begin
tmpRoad:=TRoadData.Create;
tmpRoad.Assign(TmpRoad1);
ComBinArr(TmpRoad.APointList,TmpRoad2.aPointList);
DoubleobjectCombinationOneObject(i,j,k,TmpRoad,sdtRoad);
end;
if (TNavRoadData(FNavRoadDataList[j]).TNode=TNavRoadData(FNavRoadDataList[k]).FNode) then
begin
tmpRoad:=TRoadData.Create;
tmpRoad.Assign(TmpRoad2);
CombinArr(TmpRoad.aPointList,TmpRoa[blue][/blue]d1.aPointList);
DoubleobjectCombinationOneObject(i,j,k,TmpRoad,sdtRoad);
end;
end;
end;
end;
end;
小弟在开发gis时碰到的问题:
运行环境:xp,d7.
函数说明:DoubleobjectCombinationOneObject 把列表中的两个object合并成一个(先删除指定的两个,把合并后的再加入到列表。用Tlist的delete删除用add加入)
ComBinArr作用为合并数组没有太大的关系吧
for i:= 0 to FLayerDataList.Count -1 do
begin
for j:=0 to FlayerDataList.RoadCount -1 do
begin
TmpRoad1 := FLayerDataList.RoadObject[j];
for k:=0 to FLayerDataList.RoadCount -1 do
begin
TmpRoad2 := FLayerDataList.RoadObject[k];
{**************在上面的这句出错,第一次删除的时候不会出错,删除后roadCount就会少一(删除了两个加入了一个)第二次的时候运行到上面这句k值会一直会检测到河roadcount的值相等,那么取tmpRoad2的值时候就会越界,不知道为什么? 是删除的方法不对?还是还需要什么操作?例如:开始 roadcount=107
第一次删完后:roadcount =106
此时k可以取到106,从列表取值得时候就会越界}
if (j<>k) and (TmpRoad1.sName = TmpRoad2.sName)and (TmpRoad1.sName<>'') then
begin
if (TNavRoadData(FNavRoadDataList[j]).FNode=TNavRoadData(FNavRoadDataList[k]).TNode) then
begin
tmpRoad:=TRoadData.Create;
tmpRoad.Assign(TmpRoad1);
ComBinArr(TmpRoad.APointList,TmpRoad2.aPointList);
DoubleobjectCombinationOneObject(i,j,k,TmpRoad,sdtRoad);
end;
if (TNavRoadData(FNavRoadDataList[j]).TNode=TNavRoadData(FNavRoadDataList[k]).FNode) then
begin
tmpRoad:=TRoadData.Create;
tmpRoad.Assign(TmpRoad2);
CombinArr(TmpRoad.aPointList,TmpRoa[blue][/blue]d1.aPointList);
DoubleobjectCombinationOneObject(i,j,k,TmpRoad,sdtRoad);
end;
end;
end;
end;
end;