mam taki kodzik do tworzenia trzech list wskażników robionych przez New:
var
pTBR: PTBRec;
I, J: Integer;
begin
AllRecs:=TList.Create;
AvilRecs:=Tlist.Create;
OnTBRecs:=TList.Create;
New(pTBR);
pTBR^.Style:=Ord(tbsSeparator);
pTBR^.Action:=-1;
AvilRecs.Add(pTBR);
for I:=0 to Main.alActions.ActionCount-1 do
begin
New(pTBR);
pTBR^.Style:=Ord(tbsButton);
pTBR^.Action:=I;
if copy(Main.alActions.Actions[I].Name, 1, 3)<>'act' then
begin
Dispose(pTBR);
Continue;
end;
AllRecs.Add(pTBR);
end;
for I:=0 to AllRecs.Count-1 do
begin
AvilRecs.Add(AllRecs.Items[I]);
end;
if Main.tlbrToolBar.ButtonCount>0 then
for I:=0 to Main.tlbrToolBar.ButtonCount-1 do
begin
New(pTBR);
pTBR^.Style:=Ord(Main.tlbrToolBar.Buttons[I].Style);
if pTBR^.Style=Byte(tbsButton) then
begin
pTBR^.Action:=(Main.tlbrToolBar.Buttons[I].Action as TContainedAction).Index;
for J:=0 to AvilRecs.Count-1 do
begin
if PTBRec(AvilRecs.Items[J])^.Action=pTBR^.Action then
begin
AvilRecs.Delete(J);
Break;
end;
end;
end
else
pTBR^.Action:=-1;
OnTBRecs.Add(pTBR);
end;
end;
tearaz jak pod koniec działania usera wzwolnić wszystkie wskażniki (chodzi o dispose, ale wywala mi invalid pointer operation przy którymś z itemów i nie moge dojść o który chodzi), poza tym jedna informacja AllRecs ma wszystko, natomias zawartość AvilRecs i OnTBRecs się zmienia ale nigdy nie poza to co jest w AllRecs.
Próbowałam pentelek for ale właśnie przy jednym z itemów invalid pointer operation.
Ale nagmatwałem ;-P