Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: standard error output in D4/5?

  Alt 15. Jul 2006, 16:28
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;
$2B or not $2B
  Mit Zitat antworten Zitat