Среда, 15.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » WinAPI

WinAPI. Функции работы с файлами. Часть 4

Заканчиваем изучать WinAPI работы с фалами и дисками. Это последняя статья, потому что в следующий раз мы перейдём к рассмотрению другой группы WinAPI функций. Я постарался дать тебе максимум инфе о основных API для работы с файлами. Надеюсь, что я работал не зря.

Сегодня ты узнаешь про:

ReadFile

Функция читает из файла блок данных начиная с текущей позиции. После прочтения блока, позиция переносится в конец прочитанного блока.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL ReadFile(
 HANDLE hFile, // Указатель на открытый файл
 LPVOID lpBuffer, // Указатель на буфер, куда поместится прочитанный блок
 DWORD nNumberOfBytesToRead, // количество прочитанных байтов
 LPDWORD lpNumberOfBytesRead,// указатель на число прочитанных данных 
 LPOVERLAPPED lpOverlapped // указатель на структуру OVERLAPPED
 );

Для Delphi

 function ReadFile(
 hFile: THandle; // Указатель на открытый файл
 var Buffer; // Указатель на буфер, куда поместится прочитанный блок
 nNumberOfBytesToRead: DWORD; // количество прочитанных байтов
 var lpNumberOfBytesRead: DWORD; // указатель на число прочитанных данных 
 lpOverlapped: POverlapped // указатель на структуру OVERLAPPED
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

RemoveDirectory

Функция удаляет директорию. Если внутри есть хотя бы один файл или другая директория, то произойдёт ошибка. Удаление возможно только пустой директории.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL RemoveDirectory(
 LPCTSTR lpPathName // Указатель на путь директории
 );

Для Delphi

 function RemoveDirectory(
 lpPathName: PChar// Указатель на путь директории
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

Пример использования: RemoveDirectory("с:\Windows");

SetCurrentDirectory

Функция изменяет текущую директорию на указанную. Это значит, что когда ты будешь использовать другие функции работы с файлами, и не указывать путь, то ОС будет искать файл в этой директории.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL SetCurrentDirectory(
 LPCTSTR lpPathName // Указатель на строку, содержащую путь
 ); 

Для Delphi

 function SetCurrentDirectory(
 lpPathName: PChar // Указатель на строку, содержащую путь
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

SetEndOfFile

Функция делает текущую позицию файла концом файла. Если тебе нужно сократить размер файла, то вызови эту функцию, установи курсор в необходимую позицию и вызови эту функцию.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL SetEndOfFile(
 HANDLE hFile // Указатель на открытый файл
 ); 

Для Delphi

 function SetEndOfFile(
 hFile: THandle // Указатель на открытый файл
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

SetFileAttributes

Функция позволяет устанавливать на файл атрибуты.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL SetFileAttributes(
 LPCTSTR lpFileName, // Путь к файлу
 DWORD dwFileAttributes // Будущие атрибуты файла
 ); 

Для Delphi

 function SetFileAttributes(
 lpFileName: PChar; // Путь к файлу
 dwFileAttributes: DWORD // Будущие атрибуты файла
 ): BOOL; stdcall;

С первым параметром всё ясно. Это просто путь к файлу. А вот второй параметр это атрибуты. Они могут быть в виде сочетания следующих флагов:

  • FILE_ATTRIBUTE_ARCHIVE - атрибут архивного файла.
  • FILE_ATTRIBUTE_HIDDEN - атрибут спрятанного файла.
  • FILE_ATTRIBUTE_NORMAL - атрибут нормального файла.
  • FILE_ATTRIBUTE_OFFLINE - указывает на то, что данные файла не доступны и находятся на отключённом устройстве
  • FILE_ATTRIBUTE_READONLY - атрибут файла только для чтения.
  • FILE_ATTRIBUTE_SYSTEM - атрибут системного файла.
  • FILE_ATTRIBUTE_TEMPORARY - атрибут временного файла.

Если всё ничтяк, то функция вернёт TRUE.

SetFilePointer

Функция устанавливает позицию в файле. Например, если ты хочешь прочитать данные из файла начиная с какой-то позиции, то ты должен воспользоваться этой функцией, чтобы выставить позицию, а потом прочитать данные начиная с этой позиции.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 DWORD SetFilePointer(
 HANDLE hFile, // Указатель на открытый файл
 LONG lDistanceToMove, // количество байт, на которые надо передвинуться
 PLONG lpDistanceToMoveHigh, // Второй байт, указывающий количество байт 
 DWORD dwMoveMethod //Откуда нужно начинать двигаться
 );

Для Delphi

 function SetFilePointer(
 hFile: THandle; // Указатель на открытый файл
 lDistanceToMove: Longint; // количество байт, на которые надо передвинуться
 lpDistanceToMoveHigh: Pointer; // Второй байт, указывающий количество байт 
 dwMoveMethod: DWORD //Откуда нужно начинать двигаться
 ): DWORD; stdcall;

Первый параметр - указатель на открытый файл. Второй и третий параметры определяют количество байт, на которые надо передвинуться. Последний параметр - это флаг определяющий откуда надо начинать двигаться:

  • FILE_BEGIN - Передвинуться от начала файла вперёд.
  • FILE_CURRENT - Передвинуться начиная от текущей позиции вперёд.
  • FILE_END - Передвинуться от конца файла к началу.

Если всё ничтяк, то функция вернёт младший байт установленной позиции.

Если ты хочешь узнать текущую позицию файла, то можешь смухлевать, вызвав функцию с такими параметрами: SetFilePointer(h,0,0, FILE_CURRENT). Этим ты заставляешь передвинутся на 0 байтов от текущей позиции. Передвижения не произойдёт, но функция вернёт новую позицию файла, то есть текущую.

SetVolumeLabel

Функция устанавливает метку тома

Существует в: Win NT, Win9x.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL SetVolumeLabel(
 LPCTSTR lpRootPathName, // Указатель на имя тома
 LPCTSTR lpVolumeName // Метка тома
 ); 

Для Delphi

 function SetVolumeLabel(
 lpRootPathName: PChar; // Указатель на имя тома
 lpVolumeName: PAnsiChar// Метка тома
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

WriteFile

Функция производит запись блока данных начиная с текущей позиции в файле.

Существует в: Win NT, Win9x, Win32s.

Для С/С++ объявлена в winbase.h. Для Delphi в модуле windows.

Объявление:

Для С/С++

 BOOL WriteFile(
 HANDLE hFile, // Указатель на открытый файл
 LPCVOID lpBuffer, // Указатель на данные для записи
 DWORD nNumberOfBytesToWrite, // Количество записанных байт
 LPDWORD lpNumberOfBytesWritten,// Указатель на количество записанных байт
 LPOVERLAPPED lpOverlapped // Указатель на структуру OVERLAPPED
 ); 

Для Delphi

 function WriteFile(
 hFile: THandle; // Указатель на открытый файл
 const Buffer; // Указатель на данные для записи
 nNumberOfBytesToWrite: DWORD; // Количество записанных байт
 var lpNumberOfBytesWritten: DWORD; // Указатель на количество записанных байт
 lpOverlapped: POverlapped // Указатель на структуру OVERLAPPED
 ): BOOL; stdcall;

Если всё ничтяк, то функция вернёт TRUE.

На этом я заканчиваю рассмотрения функций для работы с файлами.

Получить ссылку на материал

Категория: WinAPI | Добавил: Барон (07.12.2011)
Просмотров: 2569 | Теги: Функця, файл, WinAPI | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования