Witam,
muszę napisać pewien program który umieszcza dane wpisywane przez użytkownika w komponencie TEdit na listę jednokierunkową i wyświetla ją w komponencie TListView, po naciśnięciu przycisku. Tak wygląda mój kod:
//deklaracja listy
Plista = ^lista;
lista = record
nr: integer;
nazwa: String[30];
cena: real;
dzial: String[30];
nastepny: Plista;
end;
...
procedure TForm6.Btn_dodajClick(Sender: TObject);
var
item: TListItem;
head: Plista;
p,e: Plista;
i:integer;
begin
//dodanie nowego elementu na koniec listy
new(e);
e^.nastepny := nil;
e^.nazwa := E_nazwa.Text;
e^.nr := StrToInt(E_nr.Text);
e^.cena := StrToFloat(E_cena.Text);
e^.dzial := E_dzial.Text;
p := head;
if p=nil then
head := e
else
begin
while p^.nastepny<>nil do p:=p^.nastepny;
p^.nastepny := e;
end;
// dodaj rekord do komponentu
item := ListView.Items.Add;
item.Caption := e.nazwa;
item.SubItems.Add(IntToStr(e.nr));
item.SubItems.Add(FloatToStr(e.cena));
item.SubItems.Add(e.dzial);
//czyszczenie okien TEdit
E_nazwa.Clear;
E_nr.Clear;
E_cena.Clear;
E_dzial.Clear;
end;
Program się kompiluje, ale przy wpisaniu danych i naciśnięciu przycisku dodaj wyskakuje błąd: access violation at "adres pamięci": read of address "inny adres". Co robię źle ?