Mam problem ze wstawieniem pozycji na liscie jednokierunkowej. Kod do wstawiania mam w 2 unitach. Program sypie mi sie przy wykonywaniu 2 linii kodu zaznaczonych na czerwono w unicie6. Pojecia nie mam co jest nie tak... Z gory dziekuje za pomoc :).
W unicie1 znajdują sie takie deklaracje typu, zmiennych i procedurka:
type wskaznik=^koncerty; koncerty=record date:string[10]; band:string[15]; place:string[8]; tprice:single; nost:integer; cost:single; next:wskaznik; end;var Form1: TForm1; plik:textfile; x,first,last,prev:wskaznik; modified:boolean;procedure TForm1.Button7Click(Sender: TObject);var n:byte; NumOfRec:byte;begin x:=last; NumOfRec:=0; while x<>nil do begin NumOfRec:=NumOfRec+1; x:=x^.next; end; if last=nil then NumOfRec:=1; if (strtointdef(Edit2.Text, -1)>0) and (strtointdef(Edit2.Text, -1)<=NumOfRec) then begin n:=strtoint(Edit2.Text); x:=last; new(prev); prev:=nil; while (n>1) and (x^.next<>nil) do begin n:=n-1; prev:=x; x:=x^.next; end; new(x); Form6.ShowModal; end else ShowMessage('Blednie podany nr elementu do dodania!'); modified:=True;end;
w Unicie6 nie ma juz zadnej deklaracji typu ani wskaznika, ktory jest wykorzystywany z unitu1, pomimo tego wszystko powinno dzialac...
[color=#FF0000]x^.next:=prev^.next; prev^.next:=x;[/color] Form1.Memo1.Text:=''; x:=last; while x<>nil do begin s:=x^.date+';'+x^.band+';'+x^.place+';'+floattostr(x^.tprice)+';'+inttostr(x^.nost)+';'+floattostr(x^.cost)+';'; Form1.Memo1.Lines.Add(s); x:=x^.next; end; Close;