Помощь - Поиск - Пользователи - Календарь
Полная версия: Такой вопрос. Впервый раз добавление записи в список проходит нормально, а когда начинаешь добавлять запись в список 2 раз, то список портиться.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
alex457
Такой вопрос. Впервый раз добавление записи в список проходит нормально, а когда начинаешь добавлять запись в список 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;

procedure ViewRecords ;
begin
ClrScr;
writeln('SPISOK');
t:=List;
while(t <> nil) do
begin
writeln(t^.key, ' ',t^.str.Name,' ',t^.str.Surname);
t:=t^.next;
end;
end;
procedure home;
begin
ClrScr;
writeln('F1 - „®Ў*ў«Ґ*ЁҐ §*ЇЁбЁ');
writeln('VNIZ - ‚лў®¤ §*ЇЁбҐ©');
writeln('VVERx - „®¬*и*пп бва**Ёж*');
end;
begin
i:=0;
ClrScr;
home;
List:=nil;
repeat
Key:=Readkey;
case Key of
#59: AddRecord;
#72: ViewRecords;
#80: home;
end;
until Key = #79;
end.

-Федосеев Павел-
Обрати внимание, что Item - это указатель, а не запись (record). Особенно внимательно в строках с выделением памяти для следующего элемента списка GetMem.
alex457
Цитата(-Федосеев Павел- @ 21.04.2012 20:51) *

Обрати внимание, что Item - это указатель, а не запись (record). Особенно внимательно в строках с выделением памяти для следующего элемента списка GetMem.


Отлично, спасибо большое за подсказку. Все дело было c выделением памяти. Помогла замена getMem на new
Lapp
alex457, что тут такого продвинутого в твоем программировании? То, что ты не можешь список нормально организовать?? В следующий раз, пожалуйста, создавай тему в Задачах.

Тема переносится..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.