begin

Find := m[i]=Dir[j].NameExtti];

inc(i) end;

end;

if not Find then inc(j);

if j = 17 then begin

inc (k, 16) ;

if k >= DirSize then

exit; {Дошли до конца каталога} j := 1; {Продолжаем с 1-го элемента

следующего сектора}

if (k div 16) mod DI.ClusSize°0 then if succ(Dirs)<DI.DataLock then

inc(Dirs) (Корневой каталог} else

begin {Конец кластера} {Новый кластер} Clus :=- GetFATItem(Disk,GetCluster(Disk,Dirs));

{Новый сектор} Dirs := GetSector(Disk,Clus) end

else {Очередной сектор - в кластере/ inc(Dirs);

ReadSector(Dislt,Dirs, 1, Dir) end until Find end; {Find.Item} {————} begin (GetDicItem} (Готовим имя файла) FileName := FExpand(FileName);

FSplit(FileName, Path, NameF, Ext);

{Искать каталог} GetDirSector(Path,Disk,Dirs,DirSize);

Find := DirsoO; {Dirs'=0 - ошибка в маршруте} if Find then

Findltem; {Ищем нужный элемент} if Find then begin

(Переносим элемент каталога в Item} Move(Dir[j],Item,SizeOf(Dir_Type)) ;

{Сбросить ошибку} Disk Error := False end else

begin {Файл не найден} Disk_Error := True;

Disk_Status := $FFFF end end; tGetDirItem} ^———————————————;

Procedure GetDirSector(Path: String; var Disk: Byte; var Dirs,DirSize: Word);

(Возвращает адрес сектора, в котором содержится начало нужного каталога, или 0, если каталог не найден. Вход:

PATH - полное имя каталога ('', если каталог - текущий). Выход: