Hi
Ich suche schon stunden nach einer guten Erklärung, wie man mit der Overlapped-Struktur unzugehen hat.
Mein Testprogramm sieht wie folgt aus:
Private Sub Command6_Click()
Dim datum As String, zeit As String, akttimedate As Date, filesize As Long, _
ReadBuffer1() As Byte, ReadBuffer2() As Byte, lBytesRead1 As Long, _
lBytesRead2 As Long, fReadHandle As Long, fWriteHandle As Long, fSuccess As _
Long, lBytesWritten As Long, EndPosition As Long, filename As String
Dim position As Long, tt As OVERLAPPED
position = 5
tt.Internal = 0
tt.InternalHigh = 0
tt.offset = 0
tt.OffsetHigh = 0
tt.hEvent = 0
'Lese 1.Datenteil aus Tempsong
filesize = FileLen("c:\1.txt")
ReDim ReadBuffer1(position)
fReadHandle = CreateFile("c:\1.txt", GENERIC_WRITE Or GENERIC_READ, _
FILE_SHARE_WRITE, 0, OPEN_ALWAYS, &H80, 0) 'Öffne Tempsong
fSuccess = ReadFile(fReadHandle, ReadBuffer1(0), position, lBytesRead1, 0)
'Lese 2.Datenteil aus Tempsong
EndPosition = filesize - position
ReDim ReadBuffer2(EndPosition)
fSuccess = ReadFile(fReadHandle, ReadBuffer2(0), EndPosition, lBytesRead2, _
0)
'Schreibe neuen Tempsong
'fSuccess = SetFilePointer(fReadHandle, 0&, ByVal 0&, FILE_END)
fSuccess = WriteFile(fReadHandle, ReadBuffer2(0), lBytesRead2, _
lBytesWritten, tt)
Call SetEndOfFile(fReadHandle) 'Schneidet File an Position
Call CloseHandle(fReadHandle) 'Schliesse Tempsong
'FileMoveBusy(SN) = False
DoEvents
End Sub Als Testfile verwende ich ein Text-file mit "123456789" als Inhalt
Nun soll mit der Zeile:
fSuccess = WriteFile(fReadHandle, ReadBuffer2(0), lBytesRead2, lBytesWritten, tt)
das Byte-Array aber nicht an Position 1 auf das Testfile rausgeschrieben werden, sondern an z.b. 5 beginnend.
Wie muss ich nun die OVERLAPPED Stuktur setzen?
Diese Werte sollten noch stimmen:
tt.Internal = 0
tt.InternalHigh = 0
Aber:
tt.offset = 0
tt.OffsetHigh = 0
tt.hEvent = 0
sind mir unklar.
Die beiden Offset sind doch HiWord & LoWord oder? Aber von was?
Kann mich da bitte jemand aufklären, oder bin ich komplett auf dem Holzweg?
mfg
quickmic |