Такой вопрос. Впервый раз добавление записи в список проходит нормально, а когда начинаешь добавлять запись в список 2 раз, то список портиться. Помогите плиз.
program ttts; uses crt; Type Symbol = record Surname: String; Name: String; { Fullname: String; Bhirtday: String; Pol: String; Identity: String; DateCreate: String; DateEnd: String; Adres: String;} end; type Item = ^Pointer; Pointer = record key: integer; str: Symbol; Next: Item; end; var f: file of Symbol; s: Symbol; t,tmp,list:Item; i:integer; Key:char;
procedure AddRecord; var tmp: Item; begin ClrScr; writeln(i); writeln('Vvedite name'); Readln(s.Name); writeln('vvedite fam'); Readln(s.Surname); if (list = nil) then begin GetMem(List, sizeof(Item)); tmp:= List; end else begin tmp:=List; while (tmp^.next <> nil) do tmp:=tmp^.next; GetMem(tmp^.Next, sizeof(Item)); tmp:=tmp^.next; end; tmp^.next:= Nil; inc(i); tmp^.key:=i; tmp^.str := s; writeln('OK'); end;
Обрати внимание, что Item - это указатель, а не запись (record). Особенно внимательно в строках с выделением памяти для следующего элемента списка GetMem.
alex457
22.04.2012 1:09
Цитата(-Федосеев Павел- @ 21.04.2012 20:51)
Обрати внимание, что Item - это указатель, а не запись (record). Особенно внимательно в строках с выделением памяти для следующего элемента списка GetMem.
Отлично, спасибо большое за подсказку. Все дело было c выделением памяти. Помогла замена getMem на new
Lapp
22.04.2012 11:35
alex457, что тут такого продвинутого в твоем программировании? То, что ты не можешь список нормально организовать?? В следующий раз, пожалуйста, создавай тему в Задачах.
Тема переносится..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.