lasjak Opublikowano 26 Stycznia 2006 Zgłoś Opublikowano 26 Stycznia 2006 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; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ya23 Opublikowano 28 Stycznia 2006 Zgłoś Opublikowano 28 Stycznia 2006 x^.next:=prev^.next; a co jesli x jest ostatnim elementem? wtedy x^.next = NIL i to przypisanie nie ma sensu Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
lasjak Opublikowano 29 Stycznia 2006 Zgłoś Opublikowano 29 Stycznia 2006 Hmmm... Masz racje nie pomyslalem o tym. Pare nowych warunkow i wszystko dziala :). Dzieki za pomoc :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...