Also gibt/gab es demnach nocht nichts dafür?
Na ja, dann bleib ich wohl dennoch besser bei STD_OUTPUT_HANDLE, da andererseits ja auch schon STD_OUTPUT_HANDLE verwendet wird ^^
Code:
If [b]Mode = fmOutput[/b] and 3 Then Begin
F.InOutFunc := @_TextOut;
{$IFDEF _NewMode} If @F = @ErrOutput Then F.Handle := GetStdHandle(STD_ERROR_HANDLE)
Else {$ENDIF} F.Handle := GetStdHandle([b]STD_OUTPUT_HANDLE[/b]);
End Else Begin
F.InOutFunc := @_TextIn;
F.Handle := GetStdHandle([b]STD_INPUT_HANDLE[/b]);
End;
außerdem wüde der Zweizeiler dann auch nicht mehr so schon (kurz) aussehn
Delphi-Quellcode:
{$IFDEF _NewMode} If @F = @ErrOutput Then {$ENDIF} F.Handle := GetStdHandle(STD_ERROR_HANDLE)
{$IFDEF _NewMode} Else F.Handle := GetStdHandle(STD_OUTPUT_HANDLE) {$ENDIF} ;
// oder
{$IFDEF _NewMode}
If @F = @ErrOutput Then F.Handle := GetStdHandle(STD_ERROR_HANDLE)
Else F.Handle := GetStdHandle(STD_OUTPUT_HANDLE);
{$ELSE}
F.Handle := GetStdHandle(STD_ERROR_HANDLE);
{$ENDIF}
Hätte dieses Verhalten zwar beheben können, allerings reagieren diese Funktionen ja "genauso" wie die Originale, bis auf die Tatsache, das hier mit 64-Bit gerechnet wurd.
Und als Nebeneffekt daß kein DatenTyp ausgeschlossen wird ... unteranderem wegen genau diesem Verhalten, mit dem Puffer) schließt der DelphiCmpiler TextFile von den Seek-/SizeFunktionen aus
Du kannst es aber mal so versuchen:
Delphi-Quellcode:
// für Schreibzugriff:
RealPos := FilePos64(F) + TFileRec(F).BufEnd - TFileRec(F).BufPos;
// für Lesezugriff:
RealPos := FilePos64(F) + TFileRec(F).BufPos;