Тексты программ 3)9

if (Sector-DataLock >= 0) and (TotSecs-Sector >= 0) then GetCluster := {Нормальное обращение/

(Sector-DataLock) div ClusSize+2 else

GetCluster := 0 (Неверный номер сектора} else

GetCluster := 0 {Неверный номер диска} end; {GetCluster} ^——————————————/

Function GetDefaultDrv: Byte;

{Возвращает номер диска по умолчанию} begin

with Reg do begin

АН :- $19;

MSDOS(Reg) ;

GetDefaultDrv := AL end end; {GetDefaultDrv) ^——————————„————;

Procedure GetDirItem(FileName: String; var Item: Dir_Type);

{Возвращает элемент справочника для указанного файла} var

Dir: array [1..16] of Dir_Type; {Буфер на 1 сектор каталога}

Path : DirStr; {Маршрут поиска}

NameF: NameStr; {Имя файла}

Ext : ExtStr; {Расширение файла}

Disk : Byte; {Номер диска}

Dies : Word; /Номер сектора}

DirSize: Word; {Размер каталога}

Find: Boolean; {Флаг поиска}

j : Integer; {Номер элемента каталога} {————} Procedure Findltem;

(Ищет нужный элемент в секторах каталога} var

k,i: Integer;

т: array [1..11] of Char; {Массив имени}

Clus: Word; (Номер кластера}

DI: TDisk;

begin

GetDiskInfo(Disk,DI); {Получаем длину кластера}

ReadSector(Disk,Dirs,!,Dir); {Читаем первый сектор}

k := 0; {Количество просмотренных элементов}

j := 1; {Текущий элемент каталога} {Готовим имя и расширение для поиска}

FillChar(m,ll, ' ');

Move(NameF[1],т[1],Length(NameF)) ;

if exto'' then

Move(Ext[2],т[9],Length(ext)-l);

Find := False;

{Цикл поиска}

repeat

if Dir[j] .Nametl^tO than

exit; {Обнаружен конец списка} if (Dir[j].FAttr and $18) = 0 then

begin {Проверяем очередное имя а каталоге} Find := True;

i := 1;

While Find and (i<=ll) do