Terminal control/Dimensions: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎{{header|Tcl}}: is translation)
(Apply the Terminal Control semantic property, as a task.)
Line 1: Line 1:
{{task}}
{{task}}
Determine the height and width of the terminal, and store this information into variables for subsequent use.
Determine the height and width of the terminal, and store this information into variables for subsequent use.
[[Terminal Control::task| ]]


=={{header|Forth}}==
=={{header|Forth}}==

Revision as of 01:39, 19 October 2010

Task
Terminal control/Dimensions
You are encouraged to solve this task according to the task description, using any language you may know.

Determine the height and width of the terminal, and store this information into variables for subsequent use.


Forth

Works with: GNU Forth

<lang forth>variable term-width variable term-height

form ( width height ) term-height ! term-width !</lang>

PureBasic

PureBasic does not have native functions for reading the size of this window, but supports API-functions that allows this.

This code is for Windows only. <lang PureBasic>Macro ConsoleHandle()

 GetStdHandle_( #STD_OUTPUT_HANDLE )

EndMacro

Procedure ConsoleWidth()

 Protected CBI.CONSOLE_SCREEN_BUFFER_INFO
 Protected hConsole = ConsoleHandle()
 GetConsoleScreenBufferInfo_( hConsole, @CBI )
 ProcedureReturn CBI\srWindow\right - CBI\srWindow\left + 1

EndProcedure

Procedure ConsoleHeight()

 Protected CBI.CONSOLE_SCREEN_BUFFER_INFO
 Protected hConsole = ConsoleHandle()
 GetConsoleScreenBufferInfo_( hConsole, @CBI )
 ProcedureReturn CBI\srWindow\bottom - CBI\srWindow\top + 1

EndProcedure

If OpenConsole()

 x$=Str(ConsoleWidth())
 y$=Str(ConsoleHeight())
 PrintN("This window is "+x$+"x"+y$+ " chars.")
 ;
 Print(#CRLF$+"Press ENTER to exit"):Input()

EndIf</lang>

Retro

This information is provided by Retro in the fh (height) and fw (width) variables. You can manually obtain it using the io ports.

<lang Retro>-3 5 out wait 5 in !fw -4 5 out wait 5 in !fh</lang>

REXX

Works with: brexx
Works with: regina
Works with: rexximc

Rexx does not provide basic terminal control as part of the language. However, it is possible to determine the size of the terminal window by using external system commands:

<lang rexx> width = 'tput'( 'cols' ) height = 'tput'( 'lines' )

say 'The terminal is' width 'characters wide' say 'and has' height 'lines' </lang>

Tcl

Translation of: UNIX Shell

<lang tcl>set width [exec tput cols] set height [exec tput lines] puts "The terminal is $width characters wide and has $height lines"</lang>

UNIX Shell

Works with: Bourne Shell
Works with: bash

<lang sh>#!/bin/sh WIDTH=`tput cols` HEIGHT=`tput lines` echo "The terminal is $WIDTH characters wide and has $HEIGHT lines"</lang>