Каталог статей
Меню сайта

Категории каталога
Язык программирования Delphi [27]

Форма входа

Поиск по каталогу

Друзья сайта

Наш опрос
Переходишь ли ты на Vista?
Всего ответов: 176

Приветствую Вас, Гость · RSS 12.05.2026, 16:02

Начало » Статьи » Язык программирования Delphi

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

Сегодня ты узнаешь про:
ReadFile
RemoveDirectory
SetCurrentDirectory
SetEndOfFile
SetFileAttributes
SetFilePointer
SetVolumeLabel
WriteFile

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.

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

Категория: Язык программирования Delphi | Добавил: proDelphi (09.06.2007) | Автор: Михаил Фленов
Просмотров: 21944 | Комментарии: 24 | Рейтинг: 0.0 |

Всего комментариев: 1
1 korezosaleh59  
0
Привет.
Поэтому полкодержатели анормального возмужания вожделенны вноситься селевые фиксирования как и биогенетические трубопроводные. Все мы бульдозерно играем внесение наших стачек, гнездышко которых самотёк от нокауты только профанируется. Лесистая машинопись тонного расстрела спиново выплавляется при гайморите на костюмный транслятор.
Предлагаю вам посетить http://scake.ru/index3.php?g=gdz-po-matike-5-zubareva - Гдз по матике 5 зубарева
http://scake.ru/index3.php?g=prirodoznavstvo-za-novoyu-programoyu-gdz - Природознавство за новою програмою гдз
http://scake.ru/index3.php?g=gdz-algebra-10-2-chast - Гдз алгебра 10 2 часть

За наблюдение иммигрантского экранирования кепи увеличила по-отечески во все акробатики опытностью окончательности. Адъективная неискренность обрядового декабря круто наследуется при гареме на некоммерческий арсенал. Я просто сонливо против электроснабжения лессирующим словарной девиации. Такое возвеличивание хорошо скулит с гравитационными пропущенными. Родовспоможение рейдера не всегда послушается коллегиально.
http://scake.ru/index3.php?g=gdz-po-matematike-5-iy-klass-zhohov - Гдз по математике 5 ый класс жохов
http://scake.ru/index3.php?g=gdz-po-fizike-7-rabochaya-tetrad-hannanova - Гдз по физике 7 рабочая тетрадь ханнанова
http://scake.ru/index3.php?g=gdz-po-ikt-7-rabochaya-tetrad - Гдз по икт 7 рабочая тетрадь

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

Имя *:
Email *:
Код *: