Definicja rekordu:
type pElement=^lista;
artysta = packed record
name : String[32];
sname : String[32];
yob : Word;
yod : Word;
realm : String[32];
end;
lista = record
dane : artysta;
next: pElement;
end;
Funkcja oddająca element i sortująca względem name:
procedure insert(name,sname:String;yob,yod:Word;realm:string;var FFirst:pElement);
var
current : pElement;
previous : pElement;
begin
current:=FFirst;
if (FFirst=nil) then
begin
new(FFirst);
FFirst^.dane.name:=name;
FFirst^.dane.sname:=sname;
FFirst^.dane.yob:=yob;
FFirst^.dane.yod:=yod;
FFirst^.dane.realm:=realm;
FFirst^.next:=NIL;
end
else if (name<=FFirst^.dane.name) then
begin
new(current);
current^.dane.name:=name;
current^.dane.sname:=sname;
current^.dane.yob:=yob;
current^.dane.yod:=yod;
current^.dane.realm:=realm;
current^.next:=FFirst;
FFirst:=current;
end
else begin
while (current^.next<>nil) and (current^.next^.dane.name<name) do
begin
current:=current^.next;
end;
previous:=current;
new(current);
current^.dane.name:=name;
current^.dane.sname:=sname;
current^.dane.yob:=yob;
current^.dane.yod:=yod;
current^.dane.realm:=realm;
current^.next:=previous^.next;
previous^.next:=current;
end;
end;
Funccja zapisująca:
procedure Save(FFirst:pElement);
var t : pElement;
begin
try
assignfile(DataBase, 'artysci.dat');
rewrite(DataBase);
t:=FFirst;
while t<>nil do
begin
write(DataBase, t^.dane);
t:=t^.next;
end;
closefile(DataBase);
except
end;
end;
Mam problem z procedurą wczytującą dane z pliku do listy:
function wczytajdolisty1(var FFirst:pElement;name,sname:string;yod,yob:integer;realm:string):pElement;
var
current,prev:pElement;
danew:artysta;
begin
new(current);
current^.next:=nil;
current^.dane.name:=name;
current^.dane.sname:=sname;
current^.dane.yob:=yob;
current^.dane.yod:=yod;
current^.dane.realm:=realm;
if FFirst=nil then
begin
FFirst:=current;
end else
begin
prev:=FFirst;
while prev^.next<>nil do
begin prev:=prev^.next; end;
prev^.next:=current;
end; result:=FFirst;
end;
Spędziłem nad tym parę godzin i nie wiem, gdzie leży błąd. Proszę o pomoc. Z góry dziękuje. :)