Man könnte natürlich auch einfach alle Pointer, welche auf dieses Elemente dieses Arrays zeigen, anpassen\umrechnen, so daß sie dann wieder stimmen.
Liegen denn alle TArticles und TCategory nur in diesen beiden Arrays?
[add]
Delphi-Quellcode:
Procedure CategoriesSetLength(
Var Categories: TCategories; i: Integer);
Var i, i2: Integer;
Begin
i2 := Integer(Categories);
SetLength(Categories, i2);
Dec(i2, Integer(Categories));
If i2 = 0
Then Exit;
For i := High(Categories)
downto 0
do Begin
If Assigned(Categories[i].Children)
Then
Dec(Integer(Categories[i].Children), i2);
If Assigned(Categories[i].Parent)
Then
Dec(Integer(Categories[i].Parent), i2);
End;
End;
Wobei ich einfach statt des Pointers den Index im Array speichern würde, da braucht man nichts umrechnen, welbst wenn sich das Array mal verschiebt.