Niedziałające usuwanie w liście jednokierunkowej samoorganizującej się

0

Witam,

gdy chcę usunąć np. 5. element w liście jednokierunkowej, to w ListBox'ie zostaje mi puste pole w miejscu, gdzie znajdował się dany element, a do pliku zapisuje się puste pole. Wiem, że można zrobić warunki, żeby nie przepuszczało pustego pola, ale np. gdy usunę ten piąty element i później kliknę w ListBox'ie na którykolwiek element, który znajdował się pod tym usuniętym, to wyświetla mi w polu, do którego idzie element o jeden niższy (czyli program bierze pod uwagę też ten usunięty element). Może ktoś wie, jak mogę poprawnie usunąć tylko ten jeden element, ale tak, żeby program już później nie brał go pod uwagę? Kod odpowiedzialny za usuwanie zamieszczam poniżej:

i:=0;
while ((tmp<>NIL) AND (i<>4)) do begin
    tmp:=tmp^.next;
    i:=i+1;
end;
del:=tmp;
tmp:=tmp^.next;
dispose(del);
1

Poprawne usuwanie:

tmp:=poprzedni^.next;
poprzedni^.next:=tmp^.next;
dispose(tmp);

1 użytkowników online, w tym zalogowanych: 0, gości: 1