Das Problem ist NICHT
SetFilePointer oder
SetFilePointerEx, sondern ein Logikfehler an anderer Stelle, der deine eigene
Seek
-Funktion fälschlicherweise den alten Error Code von
CreateFile zurückgeben lässt. Sprich: Eigentlich gibt es keinen Fehler, aber dein eigener Code denkt dennoch, dass Einer aufgetreten ist. Dieses Logikproblem solltest du als allererstes beheben. Danach - wenn es tatsächlich Non-
VCL und auch Non-
RTL sein soll - würde ich auf
OPEN_EXISTING
umsteigen, da es für deinen rein lesenden Anwendungszweck die deutlich bessere Wahl ist.
Wenn die
RTL bzw.
TFileStream
ok ist, dann wäre dies auf jeden Fall die allereinfachste Möglichkeit. Das eigentliche Datei-
Handle wird vom Stream weggekapselt, aber das solltest du eigentlich auch gar nicht benötigen. Btw.
TFileStream
unterstützt (zumindest in Delphi 10.1) auch ein
Seek
mit 64-Bit Offset, wobei das wohl tatsächlich bei dir nicht von Relevanz ist.