![]() |
Re: Probleme mit BlockRead / BlockWrite
Hallo JBJHJM.
Wie Luckie schon geschrieben hat, ist Blockread hier nicht unbedingt die optimale Lösung. Anbei eine mögliche API - Implementierung.
Delphi-Quellcode:
var
hFile : LongWord; ptrBuffer : pointer = nil; cbLen : LongWord = 64; cbRead : LongWord; szFilePath : PAnsiChar = 'd:\test.txt'; szData : PAnsiChar = 'E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855'; begin //-- Schreiben GetMem(ptrBuffer, cbLen); move(szData[0], ptrBuffer^, cbLen); hFile := CreateFile(szFilePath, GENERIC_READ or GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if hFile = INVALID_HANDLE_VALUE then RaiseLastWin32Error; if SetFilePointer(hFile, 0, nil, 0) = $FFFFFFFF then RaiseLastWin32Error; if not WriteFile(hFile, ptrBuffer^, cbLen, cbRead, nil) then RaiseLastWin32Error; if not FlushFileBuffers(hFile) then RaiseLastWin32Error; if cbLen <> cbRead then RaiseLastWin32Error; if not CloseHandle(hFile) then RaiseLastWin32Error; FreeMem(ptrBuffer, cbLen); //-- Lesen hFile := CreateFile(szFilePath, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if hFile = INVALID_HANDLE_VALUE then RaiseLastWin32Error; if SetFilePointer(hFile, 0, nil, 0) = $FFFFFFFF then RaiseLastWin32Error; GetMem(ptrBuffer, cbLen); if not ReadFile(hFile, ptrBuffer^, cbLen, cbRead, nil) then RaiseLastWin32Error; if cbLen <> cbRead then RaiseLastWin32Error; if not CloseHandle(hFile) then RaiseLastWin32Error; Showmessage(PChar(ptrBuffer)); FreeMem(ptrBuffer, cbLen); end. lg.Astat |
Re: Probleme mit BlockRead / BlockWrite
Danke Astat, ich werde es mir mal angucken!
Aber mich interessiert trotzdem - auch wenns nicht der praktischste Weg ist, warum ich mit BlockRead/BlockWrite nicht anständig Strings verarbeiten kann... :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz