Функции и процедуры модуля DOS Процедуры для работы с датой и временем: Процедура GetDate Описание Возвращает текущую дату, установленную в операционной системе. GetFTime GetTiме Возвращает дату и время последней записи файла. Возвращает текущее время, установленное в операционной системе. РackTiме Преобразует запись DateTiме в четырехбайтоое упакованное символьное представление даты и времени длинного целого типа, которое используется в процедуре SetTiме. Поля записи DateTiме не проверяются на допустимость границ. SetDate Устанавливает для операционной системы текущую дату. SetFTiме Устанавливает время и дату последней записи файла. SetTiме UnpackTiме Устанавливает в операционной системе текущее время. Преобразует четырехбайтовое упакованной символьное представление даты и времени длинного целого типа, возвращаемого процеурами GetFTiме, FindFirst, FindNext в распакованную запись DateTiме. Процедуры и функции обслуживания прерываний: Процедура GetIntVес Intr МsDos SetIntVес Описание Возвращает адрес, сохраненный в заданном векторе прерываний. Выполняет заданное программное прерывание. Выполняет вызов функции DOS. Устанавливает по заданному адресу заданный вектор прерывания. Функции, проверяющие состояние диска: Процедура DiskFrее DiskSize Описание Возвращает число свободных байт на диске в заданном дисководе. Возвращает полный объем в байтах заданного диска. Процедуры обработки файлов: Процедура FExpand FSearch Описание Воспринимает имя файла и возвращает полное уточненное имя (диск, каталог, расширение). Ищет файл в списке каталогов. GetFAttr Производит поиск в заданном (или текущем) каталоге записи, содержимое которой совпадает с заданным именем файла и атрибутами. Возвращает следующую запись, имя файла и атрибуты в которой совпадают с теми, которые были заданы при предыдущем обращении к процедуре FindFirst. Возвращает атрибуты файла. SetFAttr Устанавливает атрибуты файла. FindFirst FindNext Функции управления операционной средой: Функция EnvCount EnvStr GetEnv Описание Возвращает число строк, содержащихся в операционной среде DOS. Возвращает заданную строку операционной среды. Возвращает значение заданной переменной операционной среды. Процедуры управления процессами: Процедура Eхесutе Keep SwapVectors Описание Выполняет заданную программу с указанной командной строкой. Сохраняет (прекращает выполнение и сохраняет в памяти) прекратившую работу программу, оставляя ее резидентной в памяти. Меняет местами содержимое сохраненных векторов прерываний и текущих векторов. Прочие процедуры и функции: Процедура/функция DosVersion GetCBreak SetCBreak GetVerify Описание Возвращает номер версии операционной системы DOS. Возвращает проверяемое DOS состояние Ctrl+Break. Устанавливает проверяемое DOS состояние Ctrl+Break. Возвращает состояние флага проверки в DOS. SetVerify Устанавливает состояние флага проверки в DOS. Процедура Procedure GetDate(Var Year, Month, Day, DayOfWeek : Word); Procedure GetFTime(Var F; Var Time : Longint); Procedure GetTime(Var Hour, Minute, Second, Sec100 : Word); Procedure PackTime(Var T : DateTime; Var Time : Longint); Procedure SetDate(Year, Month, Day : Word); Procedure SetFTime(Var F; Time : Longint); Procedure SetTime(Hour, Minute, Second, Sec100 : Word); Описание Возвращает текущую дату, установленную в операционной системе. Замечания: Диапазоны возвращаемых значений: Year 1980..2099 Month 1..12 Day 1..31 DayOfWeek 0..6 (0 - воскресенье, 1 - понедельник...) Возвращает дату и время последней записи файла. Замечания: Файловой переменной F должен быть назначен типизированный, нетипизированный или текстовый файл, который должен быть открыт. Время, полученной в переменной Time может быть распаковано с помощью процедуры UnpackTime. Возвращает текущее время, установленное в операционной системе. Замечания: Диапазоны возвращаемых значений: Hour 0 .. 23 (часы) Minute 0 .. 59 (минуты) Second 0 .. 59 (секунды) Sec100 0 .. 99 (сотые доли секунды) Преобразует запись DateTiме в четырехбайтовое упакованное символьное представление даты и времени длинного целого типа, которое используется в процедуре SetTiме. Замечания: Преобразовывает запись типа DateTime в 4-байтовое число типа LongInt, в котором хранятся дата и время. Это число используется процедурами SetFTime и GetFTime. Поля в записи DateTime не проверяются на принадлежность допустимому диапазону значений. Устанавливает для операционной системы текущую дату. Замечания: Допустимые диапазоны параметров: Year = 1980 .. 2099 Month = 1 .. 12 Day = 1 .. 31 Если дата недопустима, запрос игнорируется. Устанавливает время и дату последней записи файла. Замечания: Коды ошибок передаются в переменную DosError. Единственный возможный код ошибки - 6 (Недопустимый дескриптор файла). Ограничения: Переменной F должно быть назначено имя и файл должен быть открыт. Устанавливает в операционной системе текущее время. Замечания: Допустимые диапазоны параметров: Hour 0 .. 23, (Часы) Minute 0 .. 59, (Минуты) Procedure UnpackTime(Time : Longint; Var DT : TDateTime); Second 0 .. 59, (Секунды) Sec100 0 .. 99. (Сотые доли секунды) Если время не допустимо, запрос игнорируется. Преобразует четырехбайтовое упакованной символьное представление даты и времени длинного целого типа, возвращаемого процедурами GetFTiме, FindFirst, FindNext в распакованную запись DateTiме. Замечания: Преобразовывает упакованное значение LongInt, содержащее дату и время, возвращенное процедурами GetFTime, FindFirst или FindNext в неупакованную запись типа DateTime. Процедуры обслуживания прерываний модуля WinDos Процедура Procedure GetIntVec(IntNo : Byte; Var Vector : Pointer); Procedure Intr(IntNo : Byte; Var Regs : TRegisters); Описание Возвращает адрес, сохраненный в заданном векторе прерываний Замечания: Параметр IntNo определяет номер вектора прерывания (0..255), А его адрес возвращается в переменной Vector. Выполняет заданное программное прерывание Замечания: IntNo - номер программного прерывания (0 .. 255). Registers - запись, определенная в модуле DOS; TRegisters - запись, определенная в модуле WinDos. Смотри описание типа Registers и описание типа TRegisters. Перед выполнением заданного программного прерывания, Intr загружает регистры ЦП 8086 : AX, BX, CX, DX, BP, SI, DI, DS и ES из записи Regs. После завершения прерывания, содержание регистров AX, BX, CX, DX, BP, SI, DI, DS, ES и Flags сохраняется обратно в запись Regs. Чтобы избежать появления ошибки защиты при выполнении программ в стандартном режиме Windows или расширенном режиме Windows 386, всегда инициализируйте регистры DS и ES в записи TRegisters с допустимыми селекторными значениями или просто обнулите данные поля записи. Procedure MsDos(Var Regs : TRegisters); Ограничения: Не используйте программные прерывания, которые: - Зависят от значений регитров SP или SS при входе. - Изменяют значения регистров SP или SS при выходе. В Turbo Pascal версии 3.0, тип переменной Regs был определяемым пользователем. В версиях 5.0 и старше, переменная Regs должна иметь тип Registers, определенный в модуле Dos. Выполняет вызов функции DOS. Замечания: Обращение к MsDos - то же самое, что и обращение к процедуре Intr с параметром IntNo равным $21. Тип параметра Regs - это запись, определенная в модуле DOS. Используйте TRegisters, если вы пишете программу для среды Windows. Ограничения: Не используйте программные прерывания, которые: - Зависят от значений регистров SP или SS при входе. - Изменяют регистры SP или SS при выходе. Procedure SetIntVec(IntNo : Byte; Vector : Pointer); Устанавливает по заданному адресу заданный вектор прерывания. Замечания: IntNo определяет номер вектора прерываний (0 .. 255) и Vector определяет адрес. Vector обычно создается с помощью оператора @ для указания адреса процедуры обработки прерывания. Пусть Int1BSave - переменная указательного типа и Int1BHandler - идентификатор процедуры обработки прерывания, тогда первая последовательность операторов устанавливает новый обработчик прерывания, а вторая восстанавливает первоначальный обработчик: GetIntVec ($1B, Int1BSave); SetIntVec ($1B, @Int1BHandler);. SetIntVec ($1B, Int1BSave); Ограничения: В защищенном режиме DOS, в стандартном или расширенном режимах Windows, SetIntVec устанавливает вектор прерывания защищенного режима с заданным номером вектора прерываний. SetIntVec не может использоваться для изменения векторов прерываний реального режима или векторов исключений в защищенном режиме. Функции модуля WinDos, проверяющие состояние диска Фуннкция Function DiskFree(Drive : Byte) : Longint; Описание Возвращает число свободных байт на диске в заданном дисководе. Замечания: Параметр Drive: 0 - Текущий диск 1 - Диск A 2 - Диск B 3 - Диск C И так далее... Function DiskSize(Drive: Byte): Longint; Если номер дисковода недопустим, то возвращается значение равное -1. Возвращает полный объем в байтах заданного диска. Замечания: Параметр Drive: 0 - Текущий диск 1 - Диск A 2 - Диск B 3 - Диск C И так далее... Если номер дисковода недопустим, то возвращается значение равное -1. Процедуры работы с файлами модуля WinDos Процедура Описание Function FExpand (Path : PathStr) : Воспринимает имя файла и возвращает полное уточненное PathStr; Function FileSearch(Dest, Name, DirList : PChar) : PChar; Function FileSplit(Path, Dir, Name, Ext : PChar) : Word Procedure FindFirst(Path : PChar; Attr : Word; Var F : TSearchRec); Procedure FindNext(Var F : TSearchRec); Procedure GetFAttr(Var F; Var Attr : Word); Procedure SetFAttr(Var F; Attr : Word); имя (диск, каталог, расширение). Замечания: Тип PathStr определен в модуле Dos. Ищет файл в списке каталогов. Замечания: Ищет файл в списке каталогов DirList. Каталоги в DirList должны быть разделены точками с запятой. Разбивает полное имя файла на три компонента (диск, каталог, имя и расширение. Замечания: Разбивает имя файла, определенное в переменной Path на три компонента: - Параметр Dir равняется пути к файлу, включая диск и каталоги с любыми начальными и конечными левыми наклонными чертами - Параметр Name равняется имени файла - Параметр Ext раняется расширению файла с предшествующей точкой Если строковый параметр компонента равен NIL, то соответствующая часть пути не сохраняется. Если путь не содержит данный компонент, то полученная строка компонента будет пустой. Максимальные длины строк, возвращенных в параметрах Dir, Name и Ext определяются константами fsDirectory, fsFileName и fsExtension. Возвращаемое значение - комбинация констант fcDirectory, fcFileName и fcExtension, указывающая на то, какие компоненты были представлены в пути. Если имя или расширение содержит любые символы масок (* или ?), то в возвращаемом значении устанавливается флаг fcWildcards. Производит поиск в заданном (или текущем) каталоге записи, содержимое которой совпадает с заданным именем файла и атрибутами Замечания: Ищет в определенном (или текущем) каталоге первое вхождение файла, соответствующего заданному имени и набору атрибутов. Возвращает следующую запись, имя файла и¦атрибуты в которой совпадают с теми, которые были заданы при предыдущем обращении к процедуре FindFirst. Замечания: Ошибки сообщаются в переменной DosError. Единственная возможная ошибка - 18 (нет больше файлов). Возвращает атрибуты файла. Замечания: Файловой переменной F должен быть назначен типизированный, нетипизированный или текстовый файл, который не должен быть открыт. Устанавливает атрибуты файла. Замечания: Коды ошибок помещаются в переменную DosError. Возможные коды ошибок: - 3 (Недопустимый путь) - 5 (Доступ к файлу закрыт) Ограничения: Файл не может быть открыт. Процедуры и функции для работы с каталогами Процедура/функция Procedure CreateDir(Dir : PChar) Function GetCurDir(Dir : PChar; Drive : Byte) : PChar; Описание Создает новый подкаталог. Замечания: Выполняет те же функции, что и MkDir, но использует строку стиля Pascal, а не строку с завершающим нулем. Возвращает текущий каталог на заданном диске. Procedure Remove(Dir : PChar); Замечания: Параметр Drive: 0 - Текущий диск 1 - Диск A 2 - Диск B 3 - Диск C И так далее... Удаляет подкаталог. Procedure SetCurDir(Dir : PChar) Замечания: Удаляет каталог с путем, указанным в Dir. Ошибки типа несуществующего или непустого подкаталога, сохраняются в переменной DosError. Изменяет текущий каталог. Замечания: Если в Dir содержится и буква дисковода, то текущий дисковод тоже будет изменен. Процедуры и функции обслуживания прерываний модуля WinDos Процедура Function GetArgCount : Integer Function GetArgStr(Dest : PChar; Index : Integer; MaxLen : Word) : PChar; Function GetEnvVar(VarName : PChar) : PChar; Описание Возвращает число параметров, переданных программе в командной строке Возвращает заданный аргумент командной строки. Замечания: Параметр: Возвращаемое значение: Index < 0 или > GetArgCount Пустая строка Index = 0 Имя файла текущего модуля, Значение параметра возвращается в Dest Возвращает указатель на значение заданной переменной операционной среды. Возвращаемое значение: NIL, если заданная переменная среды не существует. Прочие процедуры и функции модуля WinDos Процедура/функция Function DosVersion : Word; Описание Возвращает номер версии операционной системы DOS. Замечания: Procedure GetCBreak(Var Break : Boolean); Procedure SetCBreak(Break : Boolean); Procedure SetVerify(Verify : Boolean); Младший байт результата - номер версии, а старший байт номер подверсии. Возвращает проверяемое DOS состояние Ctrl+Break. Замечания: Если Break = False, то DOS проверяет Ctrl+Break только в течение операций ввода/вывода на консоль, принтер или устройства связи. А если Break = True, то проверка осуществляется при каждом системном вызове. Устанавливает проверяемое DOS состояние Ctrl+Break. Замечания: SetCBreak устанавливает состояние проверки на Ctrl+Break в DOS. Когда SetCBreak = False, DOS проверяет Ctrl+Break только в течение операций ввода/вывода на консоль, принтер или устройства связи. Когда SetCBreak = True, проверка осуществляется при каждом системном вызове. Устанавливает состояние флага проверки в DOS. Замечания: Procedure SetVerify устанавливает состояние флага проверки в DOS. Если Verify = False, то запись на диск не проверяется. Если же Verify = True, то DOS проверяет все операции записи на диск, чтобы гарантировать правильность записи, что замедляет работу с диском.