{ The following Functions provide a way to determine if the machine the your application is running on has ANSI installed. if your Program is written using the Crt Unit the Function may return the result as False even if ANSI is present, unless you successfully use a 'work around' method to ensure all Writes go through Dos. I find it's easier just to not use Crt if my Program is working With ANSI - since there is not much that you use the Crt Unit For that can't be done in some other way. The Dos-based alternatives to ReadKey and KeyPressed are included since they are needed For the AnsiDetect Function. } Uses Dos; Function KeyPressed : Boolean; { Detects whether a key is pressed. Key remains in kbd buffer} Var r: Registers; begin r.AH := $0B; MsDos(r); KeyPressed := (r.AL = $FF) end; Function ReadKey : Char; Var r: Registers; begin r.AH := $08; MsDos(r); ReadKey := Chr(r.AL) end; Function AnsiDetected: Boolean; { Detects whether ANSI is installed } Var dummy: Char; begin Write(#27'[6n'); { Ask For cursor position report via } if not KeyPressed { the ANSI driver. } then AnsiDetected := False else begin AnsiDetected := True; { empty the keyboard buffer } Repeat Dummy := ReadKey Until not KeyPressed end end; begin end.