Функция WriteFile

Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
WriteFile записывает данные в файл. Естественно, файл должен быть открыть с правом записи. В случае синхронного ввода-вывода, функция начинает запись с текущей позиции указателя файла. При асихронном вводе-выводе используется структура lpOverlapped

Примечание

При передаче строки в lpBuffer используйте ключевое слово ByVal. Если параметр lpOverlapped равен 0, то также используйте ByVal CLng(0)

hFile
Дескриптор файла для записи. Файл должен быть открыт с правом записи
lpBuffer
Буфер, в который помещаются данные файла - переменные, массив, строки
nNumberOfBytesToWrite
Число байтов для записи в файл
lpNumberOfBytesWritten
Получает число байт, действительно записанных в файл
lpOverlapped
Если используется асинхронный режим, структура OVERLAPPED определяет начало записи. В синхронном режиме используется 0

Пример

' Запишем число и строку в файл
' C:\sample.txt
Dim longbuffer As Long  ' число для записи в файл
Dim stringbuffer As String  ' строка для записи в файл
Dim numwritten As Long  ' число записанный байтов
Dim hFile As Long  ' дескриптор файла
Dim retval As Long ' возвращаемое значение

' Открываем или создаем файл для записи
hFile = CreateFile("C:\sample.txt", GENERAL_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, 0)
If hFile = -1 Then
  Debug.Print "Невозможно открыть файл - возможно он не существует"
  End  ' выходим из программы
End If
' Записываем число (27) в файл
longbuffer = 27
retval = WriteFile(hFile, longbuffer, Len(longbuffer), numwritten, CLng(0))
' Записываем 14-символьную строку
stringbuffer = "Русский_Проект"
retval = WriteFile(hFile, ByVal stringbuffer, 14, numwritten, CLng(0))
' Закрываем файл
retval = CloseHandle(hFile)

Смотри также

ReadFile, SetFilePointer

Категория

Файлы