Zitat von
himitsu:
Liegen denn alle TArticles und TCategory nur in diesen beiden Arrays?
Ja.
Zitat von
himitsu:
Man könnte natürlich auch einfach alle Pointer, welche auf dieses Elemente dieses Arrays zeigen, anpassen\umrechnen, so daß sie dann wieder stimmen.
Das wäre eine Idee. Nur wie kann ich die umrechnen?
Ich könnte zB die alte Speicheradresse von _Articles[0] mit deren neuen vergleichen und den Unterschied auf alle Pointer dazuaddieren/abziehen.
Delphi-Quellcode:
var
Unterschied: Integer; // richtiger Typ?
I, J, K: Integer;
begin
Unterschied := Addr(_Articles[0]) - _Articles[0].Parents[0]^.Articles[0];
for I := 0 to Length(_Categories) - 1 do
begin
for J := 0 to Length(_Categories[I].Articles) do
_Categories[I].Articles[J] := _Categories[I].Articles[J] + Unterschied;
for J := 0 to Length(_Categories[I].Children) do
for K := 0 to Length(_Categories[I].Children[J]^.Articles) do
_Categories[I].Children[J]^.Articles[K] := _Categories[I].Children[J]^.Articles[K] + Unterschied;
end;
end;
Das will aber nicht so recht...[DCC Fehler] E2015 Operator ist auf diesen Operandentyp nicht anwendbar