Не работает дозапись WriteFile - VB
Формулировка задачи:
Доброго времени суток! Товарищи, проблема вот в чём, необходимо, чтобы каждый раз при вызове функции она добавляла в файл информацию в следующую строку, либо в произвольную. Попытался в SetFilePointer указать со 2-й строки писать, а она всё равно в 1-ю пишет и ничего не дописывает. Каждый раз в 1-ю строку. Помогите, пожалуйста.
Листинг программы
- Option Explicit
- Private Const GENERIC_READ = &H80000000
- Private Const GENERIC_WRITE = &H40000000
- Private Const FILE_SHARE_READ = &H1
- Private Const FILE_SHARE_WRITE = &H2
- Private Const OPEN_EXISTING = 3
- Private Const FILE_BEGIN = 0
- Private Const INVALID_HANDLE_VALUE = -1
- Private Const CREATE_ALWAYS = 2
- Private Const OPEN_ALWAYS = 4
- Private Type OVERLAPPED
- Internal As Long
- InternalHigh As Long
- offset As Long
- OffsetHigh As Long
- hEvent As Long
- End Type
- Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
- Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
- Private Declare Function SetEndOfFile Lib "kernel32" (ByVal hFile As Long) As Long
- Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
- Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
- Private Sub Command1_Click()
- Dim szPath As String
- Dim dwWrittenBytes As Long
- Dim OV As OVERLAPPED
- Dim hFile As Long
- Dim a() As Byte
- a = StrConv("privet", vbFromUnicode)
- szPath = "c:\myfile.txt"
- hFile = CreateFile(szPath, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_ALWAYS, 0, 0)
- If hFile <> INVALID_HANDLE_VALUE Then
- Call SetFilePointer(hFile, 2, 0, FILE_BEGIN)
- Call WriteFile(hFile, a(0), UBound(a) + 1, dwWrittenBytes, OV)
- Call SetEndOfFile(hFile)
- Call CloseHandle(hFile)
- End If
- End Sub
Решение задачи: «Не работает дозапись WriteFile»
textual
Листинг программы
- Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
- .....
- Call WriteFile(hFile, a(0), UBound(a) + 1, dwWrittenBytes, ByVal 0&)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д