Witam,
mam następujący problem. Chciałbym żeby przycisk usuwał z listy dwukierunkowej element wybrany w ListView. Mam następujący kod:
Plista = ^lista;
lista = record
nr: integer;
nazwa: String[30];
cena: real;
dzial: String[30];
nastepny: Plista;
poprzedni: Plista;
end;
listaVar = record
head : Plista;
tail : Plista;
count : integer;
end;
...
procedure TForm6.FormCreate(Sender: TObject);
begin
L.head := nil;
L.tail := nil;
L.count := 0;
end;
procedure TForm6.btn_usunClick(Sender: TObject);
var
e: Plista;
begin
if ListView.ItemIndex=-1 then
begin
raise Exception.Create('Nic nie zaznaczono');
Exit;
end;
e:=L.tail;
while e.nazwa<>ListView.Selected.Caption do e:=e^.nastepny;
if e^.poprzedni<>nil then e^.poprzedni^.nastepny:=e^.nastepny
else L.head := e^.nastepny;
if e^.nastepny<>nil then e^.nastepny^.poprzedni := e^.poprzedni
else L.tail := e^.poprzedni;
dispose(e);
dec(L.count);
ListView.DeleteSelected;
end;
niestety, program się kompiluje, a po naciśnięciu wywala błąd "access violation". Myślę, że problem tkwi w tej linijce:
while e.nazwa<>ListView.Selected.Caption do e:=e^.nastepny;
Jak to zrobić, żeby pętla przechodziła do elementu listy dwukierunkowej zaznaczonego w ListView ?