![]() |
Mit SetFilePointer zum Ende - n springen, wie?
Hi,
joa, das Topic sagt eigentlich schon alles... Wie mache ich das? n kann eine beliebige Nummer sein. MfG: sk0r |
Re: Mit SetFilePointer zum Ende - n springen, wie?
GetFileSize gibt dir die Gesamtgröße der Datei. N musst du dann nur noch abziehen.
|
Re: Mit SetFilePointer zum Ende - n springen, wie?
Es gibt nicht umsonst den Wert FILE_END für dwMoveMethod.
|
Re: Mit SetFilePointer zum Ende - n springen, wie?
Ja klar, aber dann springt er doch komplett ans Dateiende. Oder wird der Offset dann von hinten aus zurückgesprungen?
|
Re: Mit SetFilePointer zum Ende - n springen, wie?
Ich kann doch nicht einfach FILE_END - n machen.^^
|
Re: Mit SetFilePointer zum Ende - n springen, wie?
Ist es denn eigentlich so schwer die Hilfe zu lesen?
![]() ![]() |
Re: Mit SetFilePointer zum Ende - n springen, wie?
Sorry, aber ich kann kein Englisch. :(
Delphi-Quellcode:
So versuche ich nun die Zahl auszulesen. Ich habe am Ende der Datei eine 17 platziert,
type TByteArr = array[0..1] of Byte;
function GetValue:TByteArr; var hOpn: Cardinal; OfStruct: TOFStruct; dwBytesRead: Cardinal; mBuf: TByteArr; begin hOpn := OpenFile(PChar(GetMySelf()), OfStruct, 0); if hOpn <> 0 then begin SetFilePointerEx(hOpn, -2, nil, FILE_END); ReadFile(hOpn, mBuf, 2, dwBytesRead, nil); showmessage(inttostr(mBuf[0]) + inttostr(mBuf[1])); result := mBuf; CloseHandle(hOpn); end; end; aber es kommt immer eine andere Zahl (690) heraus. |
Re: Mit SetFilePointer zum Ende - n springen, wie?
erstens ist mein Englich auch nicht sonderlich gut, aber dennoch kann/versuch ich es zu lesen ... notfalls gibt's ja noch Wörterbücher und Übersetzer :stupid:
Zitat:
zu OpenFile: Zitat:
![]() PS: dieses geht bei mir:
Delphi-Quellcode:
type TByteArr = array[0..1] of Byte;
function GetValue: TByteArr; var hOpn: THandle; dwBytesRead: Cardinal; mBuf: TByteArr; begin // 'ne Testdatei mit "17" am Ende erzeugen hOpn := CreateFile('test.dat', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0); if hOpn <> INVALID_HANDLE_VALUE then begin mBuf[0] := 8; mBuf[1] := 9; WriteFile(hOpn, mBuf, 2, dwBytesRead, nil); mBuf[0] := 1; mBuf[1] := 7; WriteFile(hOpn, mBuf, 2, dwBytesRead, nil); CloseHandle(hOpn); end; mBuf[0] := 0; // nur damit nicht noch die 17 vom Speichern drinsteht, mBuf[1] := 0; // da beim Lesen dwBytesRead nicht geprüft wird. // Auslesen hOpn := CreateFile('test.dat', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0); if hOpn <> INVALID_HANDLE_VALUE then begin SetFilePointer(hOpn, -2, nil, FILE_END); ReadFile(hOpn, mBuf, 2, dwBytesRead, nil); showmessage(inttostr(mBuf[0]) + inttostr(mBuf[1])); result := mBuf; CloseHandle(hOpn); end; end; |
Re: Mit SetFilePointer zum Ende - n springen, wie?
Gut, mit CreateFile klappt es. Danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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