lista.pas
{
I found this source on my *old* red hat linux partition.
Compiles under Free Pascal and Delphi. Make sure the file
ends with .dpr if you intend to compile it in Deplhi.
David Grundberg 2005-10-02
}
program Lista;
{$IFDEF MSWINDOWS}
{ Delphi }
{$APPTYPE console}
{$ELSE}
{ DOS/Free Pascal on Linux }
uses crt;
{$ENDIF}
type
PField = ^TField;
TField = record
Name, Address, Postal, Telephone : string;
next,prev : PField;
end;
var
svar : char;
first, last : PField;
temp,temp2 : PField;
function NewField : PField;
var
ny : PField;
begin
new(ny);
ny^.name:='';
ny^.address:='';
ny^.postal:='';
ny^.telephone:='';
ny^.prev:=last;
ny^.next:=nil;
if last = nil then
first:=ny
else
last^.next:=ny;
last:=ny;
NewField:=ny;
end;
procedure DeleteField(field:PField);
begin
if field = nil then exit;
if field^.next <> nil then
field^.next^.prev:=field^.prev;
if field^.prev <> nil then
field^.prev^.next:=field^.next;
if last = first then first:=nil;
if last = field then last:=field^.prev;
dispose(field);
end;
begin
last:=nil;
first:=nil;
repeat
Writeln('***** Turboadressboken! *****');
Writeln('Meny: 1. Skriv in ny uppgift');
Writeln(' 2. Visa alla uppgifter');
Writeln(' 3. Ta bort vissa uppgift(er)');
Writeln(' q. Avsluta');
repeat
{$IFDEF MSWINDOWS}
readln(svar);
{$ELSE}
svar:=readkey;
{$ENDIF}
until (svar in ['1','2','3','q','Q']);
if svar = '1' then
begin
temp:=NewField;
writeln('Namn:');
readln(temp^.name);
writeln('Adress:');
readln(temp^.address);
writeln('Postnummer:');
readln(temp^.postal);
writeln('Telefon:');
readln(temp^.telephone);
end
else if svar = '2' then
begin
temp:=first;
while temp <> nil do
begin
Writeln('Namn:', temp^.name);
temp:=temp^.next;
end;
end
else if svar = '3' then
begin
temp:=first;
while temp <> nil do
begin
temp2:=temp^.next;
Writeln('Ta bort ',temp^.name,'? J/N ');
repeat
{$IFDEF MSWINDOWS}
readln(svar);
{$ELSE}
svar:=readkey;
{$ENDIF}
until (svar in ['J','j','N','n']);
if svar in ['j','J'] then
DeleteField(temp);
temp:=temp2;
end;
end;
until (svar in ['q','Q']);
while last <> nil do
begin
DeleteField(last);
end;
Writeln('Tack för att du valde Turboadressboken!');
end.