Тексты программ 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