DISK - номер диска;

DIRS - номер первого сектора каталога или О/ DIRSIZE - размер каталога (в элементах DIR_TYPE).} var

i,j,k Integer; {Вспомогательные переменные 1 Find Boolean; {Признак поиска) m array [1..11] of Char; {Массив имени каталога} s String; {Вспомогательная переменная} DI TDisk; {Информация о диске} Dir array [1..16] of Dir_Type; {Сектор каталога} Clus Word; {Текущий кластер каталога} label err;

begin

{Начальный этап: готовим путь к каталогу и диск} if Path = '' then {Если каталог текущий,}

GetDir(0,Path); {дополняем маршрутом поиска} if Path[2] о ':' then {Если нет диска,}

Disk := GetDefaultDrv {берем текущий} else

begin {Иначе проверяем имя диска} Disk :» GetDiskNumber(Path[l]);

if Disk-255 then

begin {Недействительное имя диска} Err: {Точка выхода при неудачном поиске}

Dirs := 0; {Нет сектора} Disk_Error :" True; {Флаг ошибки} Disk_Status :- $FFFF; {Статус fFFFF} exit end;

Delete(Path,1,2) {Удаляет имя диска из пути} end;

{Готовим цикл поиска]

if Path[l]='\' then {Удаляем символы \}

Delete(Path,I,1); /в начале} if Path[Length(Path)] = '\' then

Delete(Path,Length(Path),1); {и конце маршрута} GetDiskInfo(Disk,DI) ;

with DI do begin

Dirs := RootLock; {Сектор с каталогом} DirSize :" RootSize {Длина каталога} end;

ReadSector(Disk,Dirs,1,Dir); {Читаем корневой каталог} Clus := GetCluster(Disk,Dirs); {Кластер начала каталога} {Цикл поиска по каталогам}

Find :- Path"''; {Path-'' - конец маршрута} while not Find do begin

{Получаем в S первое имя до символа \} s := Path;

if pos('\',Path) <> 0 then

s[0] :-chr(post'\',Path)-1);

{Удаляем выделенное имя из маршрута) Delete(Path,I,Length(s)) ;

if Path[l]»'\' then

Delete (Path,1,1); '.Удаляем разделитель \} {Говим массив имени} FillChar(m,ll, ' '):