Списки. PASCAL
Добавлено: 14 май 2009, 20:11
Возникла проблема вывода списка в файл
Код: Выделить всё
unit workmus;
interface
uses types,crt;
procedure Load_BD;
procedure Show_BD;
procedure Out_BD;
implementation
procedure Load_BD;
var flag,code:integer;
i,k:byte;
raz,use:char;
begin
new(playlist);
first:=playlist;
assign(BD,'playlist.bd');
reset(BD);
flag:=0;
i:=0;
while not(eof(BD)) do
begin
i:=0;
k:=0;
flag:=0;
while not(eoln(BD)) do
begin
inc(i);
if flag=0 then
begin
read(BD,playlist^.Track_name.str[i]);
if playlist^.Track_name.str[i]=':' then
begin
flag:=1;
playlist^.Track_Name.dl:=i-1;
end;
end
else
if flag=1 then
begin
inc(k);
read(BD,playlist^.Artist.str[k]);
if playlist^.Artist.str[k]=':' then
begin
flag:=2;
playlist^.Artist.dl:=k-1;
end;
end
else
begin
read(BD,use);
val(use,playlist^.used,code);
end;
end;
if not eof(BD) then readln(BD);
new(playlist^.next);
playlist:=playlist^.next;
end;
playlist^.next:=nil;
end;
procedure Show_BD;
var i,k:integer;
begin
playlist:=first;
writeln('Плейлист:');
writeln;
k:=0;
while playlist^.next<>nil do
begin
for i:=1 to playlist^.Track_name.dl do
write(playlist^.Track_name.str[i]);
write(' - ');
for i:=1 to playlist^.Artist.dl do
write(playlist^.Artist.str[i]);
inc(k);
write(' Проигранно ',playlist^.used,' раз');
writeln;
playlist:=playlist^.next;
end;
end;
procedure Out_BD;
var i:integer;
begin
assign(outBD,'NewBD.bd');
rewrite(outBD);
playlist:=first;
while playlist^.next<>nil do
begin
for i:=1 to playlist^.Track_name.dl do
write(outBD,playlist^.Track_name.str[i]);
write(outBD,':');
for i:=1 to playlist^.Artist.dl do
write(outBD,playlist^.Artist.str[i]);
writeln(outBD,':',playlist^.used);
playlist:=playlist^.next;
end;
end;
end.