|
@@ -131,6 +131,19 @@ begin
|
|
|
bHasLastNode := False;
|
|
|
bHasMoreThanOneLastNode := False;
|
|
|
iEndlessNextID := -1;
|
|
|
+ // 生产所有兄弟的ID关系数组,后面检查兄弟关系死循环用
|
|
|
+ if bIsFirstChild then
|
|
|
+ for K := iFirstChild to FIdx.RecordCount - 1 do
|
|
|
+ begin
|
|
|
+ Rec3 := FIdx.Records[K];
|
|
|
+ // 是否换Parent
|
|
|
+ if Rec1.ValueByName('ParentID').AsInteger <> Rec3.ValueByName('ParentID').AsInteger then Break;
|
|
|
+ iLength := Length(arrChild) + 1;
|
|
|
+ SetLength(arrChild, iLength, 2);
|
|
|
+ arrChild[iLength - 1, 0] := Rec3.ValueByName('ID').AsInteger;
|
|
|
+ arrChild[iLength - 1, 1] := Rec3.ValueByName('NextSiblingID').AsInteger;
|
|
|
+ end;
|
|
|
+
|
|
|
for J := iFirstChild to FIdx.RecordCount - 1 do
|
|
|
begin
|
|
|
ProgressBar.Position := I;
|
|
@@ -159,17 +172,6 @@ begin
|
|
|
bHasMoreThanOneLastNode := True;
|
|
|
bHasLastNode := True;
|
|
|
end;
|
|
|
- // 生产所有兄弟的ID关系数组,后面检查兄弟关系死循环用
|
|
|
- for K := iFirstChild to FIdx.RecordCount - 1 do
|
|
|
- begin
|
|
|
- Rec3 := FIdx.Records[K];
|
|
|
- // 是否换Parent
|
|
|
- if Rec1.ValueByName('ParentID').AsInteger <> Rec3.ValueByName('ParentID').AsInteger then Break;
|
|
|
- iLength := Length(arrChild) + 1;
|
|
|
- SetLength(arrChild, iLength, 2);
|
|
|
- arrChild[iLength - 1, 0] := Rec3.ValueByName('ID').AsInteger;
|
|
|
- arrChild[iLength - 1, 1] := Rec3.ValueByName('NextSiblingID').AsInteger;
|
|
|
- end;
|
|
|
end;
|
|
|
// 寻找后兄弟
|
|
|
if Rec1.ValueByName('NextSiblingID').AsInteger = Rec2.ValueByName('ID').AsInteger then
|
|
@@ -206,7 +208,7 @@ begin
|
|
|
end;
|
|
|
if iEndlessNextID >= 0 then
|
|
|
begin
|
|
|
- mmError.Lines.Add(Format('Node[ID: %d] and Node[ID: %d] have endless loop.', [Rec1.ValueByName('ID').AsInteger, iEndlessNextID]));
|
|
|
+ mmError.Lines.Add(Format('Node[ID: %d] have endless loop.', [Rec1.ValueByName('ID').AsInteger]));
|
|
|
Inc(iError);
|
|
|
end;
|
|
|
end;
|