Вообще говоря, упакованные данные можно
Вообще говоря, упакованные данные можно было бы извлечь и другим способом — логически умножить упакованную величину на константу, содержащую сплошные единицы в соответствующем поле, и сдвинуть полученный результат на нужное число разрядов вправо.
Совет 4 (Паскаль)
Для извлечения файлов из текущего или указанного каталога можно воспользоваться процедурами FindFirst(path, .attr, sr) И FindNext(sr), вклю
ченными в состав модуля DOS. Аргумент path задает маску отбора файлов (например, "*.pas"), расширенную спецификацию маски (например, "с: \tp\source\* .раs") или просто путь (например, "c:\tp"). Второй аргумент определяет атрибут, которым должен быть снабжен отбираемый набор данных, и может принимать логическую сумму из следующих значений, задаваемых в Паскале мнемоническими константами:
Readonly - отбирать файлы с признаком "Только для чтения";
Hidden - отбирать файлы с признаком "Скрытый";
SysFile - отбирать системные файлы;
VolumeID - отбирать наборы с меткой "Идентификатор тома";
Directory - отбирать каталоги;
Archive - отбирать файлы с признаком "Архивировать";
AnyFile - брать любые файлы.
Аргумент sr представляет собой запись типа searchRec, на поля которой заносятся атрибуты найденного набора. Этот тип описан в модуле DOS и имеет следующую структуру:
type
SearchRec=record
Fill:array [1..21] of byte;
Attr:byte; {атрибут набора данных}
Time:longint; {упакованные дата и время создания}
Size:longint; {длина набора в байтах}
Name:string[12]; (имя набора} end;
Цикл поиска нужных наборов данных начинается с обращения к процедуре FindFirst (поиск первого объекта) и повторяется многократными обращениями к процедуре FindNext (поиск следующего объекта). Аргумент sr в обоих обращениях должен быть один и тот же. Цикл поиска продолжается до тех пор, пока системная переменная DosError принимает нулевое значение. Как только очередная попытка окажется неудачной, в DosError заносится 18.
Содержание Назад Вперед