Скачиваний:
18
Добавлен:
08.01.2014
Размер:
1.28 Кб
Скачать
(* жХОЛГЙС getoccupier РПМХЮЙФШ ЖБНЙМЙА ЙЪ ЖБКМБ residents *)

uses linux;

const
NAMELENGTH=41;

var
namebuf:array [0..NAMELENGTH-1] of char; (* вХЖЕТ ДМС ЖБНЙМЙЙ *)
const
infile:integer=-1; (* дМС ИТБОЕОЙС ДЕУЛТЙРФПТБ ЖБКМБ *)

function getoccupier(roomno:integer):pchar;
var
offset, nread:longint;
begin
(* хВЕДЙФШУС, ЮФП ЖБКМ ПФЛТЩЧБЕФУС ЧРЕТЧЩЕ *)
if infile = -1 then
begin
infile := fdopen ('residents', Open_RDWR);
if infile = -1 then
begin
getoccupier := nil; (* оЕЧПЪНПЦОП ПФЛТЩФШ ЖБКМ *)
exit;
end;
end;

offset := (roomno - 1) * NAMELENGTH;

(* оБКФЙ РПМЕ ЛПНОБФЩ Й УЮЙФБФШ ЖБНЙМЙА ЦЙМШГБ *)
if fdseek (infile, offset, SEEK_SET) = -1 then
begin
getoccupier := nil;
exit;
end;

nread := fdread (infile, namebuf, NAMELENGTH);
if nread <= 0 then
begin
getoccupier := nil;
exit;
end;

(* уПЪДБФШ УФТПЛХ, ЪБНЕОЙЧ УЙНЧПМ РЕТЕЧПДБ УФТПЛЙ ОБ '\0' *)
namebuf[nread - 1] := #0;
getoccupier := namebuf;
end;

(* рТПЗТБННБ listoc ЧЩЧПДЙФ ЧУЕ ЖБНЙМЙЙ ЦЙМШГПЧ *)

const
NROOMS=10;

var
j:integer;
p:pchar;
begin

for j := 1 to NROOMS do
begin
p := getoccupier (j);
if p<>nil then
writeln('лПНОБФБ ', j:2, ', ', p)
else
writeln('пЫЙВЛБ ДМС ЛПНОБФЩ ', j);
end;
end.
Соседние файлы в папке 2