Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

1.2.2. Запись в файл

Для записи данных используется функция WriteFile, имеющая следующий синтаксис:

function WriteFile(

hFile: THandle;

const Buffer;

nNumberOfBytesToWrite: DWORD;

var IpNumberOfBiytesWritien: DWORD;

IpOverlapped: POverlapped

): BOOL; stdcall;,

где hFile дескриптор файла;

Buffer - указывает на буфер, в который помешаются данные, записываемые в файл;

nNumberOfBytesToWrite — определяет, сколько байт следует записать в файл;

IpNumberOfBytesWritlen – возвращает количество фактически записанных байт;

IpOverlapped - используется для асинхронного ввода-вывода. При синхронном вводе-выводе данный параметр устанавливается в nil.

Функция WriteFile — возвращает TRUE в случае успеха.

1.2.3. Чтение из файла

Для чтения данных используется функция ReadFile, которая имеет следующий синтаксис:

function ReadFile(

hFile: THandle;

var Buffer;

nNumberOfBytesToRead: DWORD;

var IpNumberOfBytesRead: DWORD;

IpOverlapped: POveriapped

): BOOL: stdcall;

где hFile дескриптор файла;

Buffer - указывает на буфер, в который помещаются данные, считываемые из файла;

nNumberOfBytesToRead - определяет, сколько байт следует прочитать из файла;

IpNumberOfBytesRead - возвращает количество фактически считанных байт;

IpOverlapped - используется для асинхронного ввода-вывода. При синхронном вводе-выводе данный параметр устанавливается в nil.

Функция ReadFile - возвращает TRUE в случае успеха.

1.2.4. Закрытие файла

Для закрытия файла используется функция CloseHandle, которая имеет следующий синтаксис:

function CloseHandle (hObject: THandle): BOOL; stdcall;,

где параметр hObject - дескриптор файла.

1.3. Пример программы, использующей функции Win32 для доступа к файлам и каталогам

Программа выполняет следующие действия.

  • Создает файл на удаленном компьютере.

  • Записывает в файл 14 байт и закрывает файл.

  • Открывает файл.

  • Читает содержимое файла и закрывает файл.

// Листинг программы

Var

FileHandle: THANDLE ;

BytesWritten, BytesRead; Cardinal;

s: Array[1..50] of char;

begin

// Получить дескриптор \\Mysef\C:\sample.txt

FileHandle:= CreateFile(‘\\myself\C:\Sample.txt',

GENERIC_WRITE or GENERIC_READ,

FILE_ SHARE_READ or FILE_SHARE_WRITE, Nil,

CREAT_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);

If FileHandle=INVALlD__HANDLE_VALUE

then ShowMessageFmt(При создании файла произошла ошибка %d ',

[GetLastError()])

else

// Записать 14 байт в новый файл

if (WriteFile(FileHandle, ' This is a test ', 14, BytesWritten, Nil)=False)

then ShowMessageFmt(' При записи в файл произошла ошибка %d',

[GetLastError()])

else if (CloseHandle(FileHandle) = False)

then ShowMessageFmt('При закрытии файла произошла ошибка %d',

[GetI.astError()]);

// Чтение из файла

FileHandle :=CreateFile('\\myself\C:\Sample.txt',

GENERIC_WRITE or GENERIC_READ,

FILE_SHARE_READ or FILE_SHARE_WRITE, Nil,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

If FileHandle=INVALID_HANDLE_VALUE

then ShowMessageFmt('При открытии файла произошла ошибка %d',

[GetLastError()])

else

// Чтение из файла

lf(ReadFile(FileHandle, s, 14, BytesRead, Nil) = False)

then ShowMessageFmt('IIpи чтении из файла произошла ошибка %d',

[GetLastError()])

else

begin

ShowMessage(s);

if (CloseHandle(FileHandle) = False)

then ShowMessageFmt('При закрытии файла произошла ошибка %d',

[GctLastError()]);

end;

end:.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]