【楼主又来水经验了】无节操の翻译(莫手贱点入)
pascal吧
全部回复
仅看楼主
level 9
为了防止各种水军、卖辣条的小贩影响大家视觉体验,请按“
只看楼主”
本人小学六年级,翻译用的是Google,人工修正了一些错误,但可能读起来还是不太通顺
请各位犇多多指教,
谢谢[吐舌]
(英文版原件在FP安装目录\doc\rtl.pdf)
2014年08月31日 06点08分 1
level 9
1. 概述
本章介绍Free Pascal中的CRT单元,它在DOS、Linux及Windows下均可使用。该单元首先在DOS下由Florian klaempfl编写。该单元被Mark May移植到Linux并由Michael Van Canneyt 和Peter Vreman增强。它工作在Linux控制台,以及X-Windows下的xtern和rxvt窗口。它们的功能是一样的,只是在Linux下使用的早期实现(0.9.1版及更早的编译器)的CRT单元在程序启动时会自动清除屏幕。
使用CRT单元时的一些注意事项:
·命令行中的输入输出重定向在使用CRT单元时将无法使用。
·出于同样的原因,它们不能用作CGI的脚本与Web服务器使用。
·使用CRT单元和Graph单元时可能并不总是正常运行。
·CRT单元不是线程安全的。
·在Linux或其他UNIX操作系统,使用在Linux设备的特殊功能时其他程序将无法正常工作。终端设置在RAW模式下,它会破坏大部分的终端仿真设置。
·CRT单元用DOS下的TP编写。它被设计成单字节字符集,其中1字符=1个字节。这意味着宽字符串或UTF-8编码(ANSI)字符串将无法正常工作。
2014年08月31日 06点08分 2
level 9
2.2
类型
PConsoleBuf = ^TConsoleBuf
TCharAttr = packed record
ch : Char;
attr : Byte;
end
TConsoleBuf = Array[0..ConsoleMaxX*ConsoleMaxY-1] of TCharAttr;
tcrtcoord = 1..255
tcrtcoord 是一个子域类型表示的CRT坐标。它支持的坐标范围从1到255。使用这种类型域范围检查打开时,可以用来调试CRT的代码。
2014年08月31日 06点08分 4
level 9
2.3
变量
CheckBreak : Boolean
检查CTRL-Break按键。未使用。
CheckEOF : Boolean
检查标准输入的EOF。未使用。
CheckSnow : Boolean
检查CGA屏幕上的雪。未使用。
ConsoleBuf : PConsoleBuf
DirectVideo : Boolean
该变量控制屏幕上的输出。如果值为True,光标直接通过端口访问设置。如果值为False,那么BOIS被使用。仅在DOS下定义。
LastMode : Word = 3
该变量告诉你在屏幕上最后选择的模式。仅在DOS下定义。
TextAttr : Byte = $07
该变量控制字符写入到屏幕的属性。
WindMax : Word = $184f
WindMax的高字节包含Y坐标,而低字节包含X坐标。使用这个变量是过时的,使用 WindMaxX 和 WindMaxY 代替。
WindMaxX : DWord
所定义的窗口的右下角的X坐标
WindMaxY : DWord
所定义的窗口的右下角的Y坐标
WindMin : Word = $0
WindMin的高字节包含Y坐标值,而低字节包含X坐标。使用这个变量是过时的,使用 WindMinX 和 WindMinY 代替。
WindMinX : DWord
所定义的窗口的左上角的X坐标
WindMinY : DWord
所定义的窗口的左上角的Y坐标
2014年08月31日 06点08分 5
level 9
3.
过程和函数
3.1
AssignCrt
简介:关联文件到CRT。
声明:procedure AssignCrt(var F:Text)
说明:AssignCrt指定一个文件F到控制台。一切写入文件F的内容都将写入控制台。如果控制台包含窗口,将被写入到窗口来代替。
另见:Window
例程:
Program Example1;
uses Crt;
{ 用以演示AssignCrt的功能的程序 }
var
F : Text;
begin
AssignCrt(F);
Rewrite(F); { 别忘了打开输出! }
WriteLn(F,*这被写入到所分配的文件*);
Close(F);
end.
2014年08月31日 06点08分 6
level 9
3.2
ClrEol
简介:清除从光标位置到行尾的字符。
声明:procedure ClrEol
说明:ClrEol清除当前行从光标位置开始到该行的结束的所有字符,光标不动
另见:DelLine,InsLine,ClrScr
例程:
Program Example2;
uses Crt;
{ 用以演示ClrEol的功能的程序 }
var
I,J : integer;
begin
For I:=1 to 15 do
For J:=1 to 80 do
begin
gotoxy(j,i);
Write(j mod 10);
end;
Window(5,5,75,12);
Write(*此行将从这里起被清除,*,
*直到窗口最右侧*);
GotoXY(9,WhereY);
Readkey;
ClrEol;
WriteLn;
end.
2014年08月31日 06点08分 7
level 9
3.3
ClrScr
简介:清除当前窗口。
声明:procedure ClrScr
说明:ClrScr清除当前窗口(使用当前颜色),并将光标移至当前窗口的左上角。
另见:Window
例程:
Program Example3;
uses Crt;
{ 用以演示ClrScr的功能的程序 }
begin
WriteLn(*按任意键清除窗口*);
ReadKey;
ClrScr;
WriteLn(*有趣的清屏*);
end.
2014年08月31日 06点08分 8
level 9
3.4
cursorbig
简介:显示大光标
声明:procedure cursorbig
说明:CursorBig使光标变成大矩形。未在Unix系统实验。
另见:CursorOn,CursorOff
2014年08月31日 06点08分 9
level 9
3.5
cursoroff
简介:隐藏光标
声明:procedure ccursoroff
说明:CursorOff切换光标关闭(即光标不可见)。未在Unix系统实验。
另见:CursorOn,CursorBig
2014年08月31日 06点08分 10
level 9
3.6
cursoron
简介:显示光标
声明:procedure cursoron
说明:CursorOn切换光标显示。未在Unix系统实验。
另见:CursorBig,CursorOff
2014年08月31日 06点08分 11
level 9
3.7
Delay
简介:执行延时程序。
声明:procedure Delay(MS: Word)
说明:Delay等待指定的毫秒数。指定的秒数是一个近似值。如果系统负载很高,可能过了很多。
另见:Sound,NoSound
例程:
Program Example4;
uses Crt;
{ 用以演示Delay的功能的程序 }
var
i : longint;
begin
WriteLn(*倒计时*);
for i:=10 downto 1 do
begin
WriteLn(i);
Delay(1000); {等待1秒}
end;
WriteLn(*轰!!!*);
end.
2014年08月31日 06点08分 12
level 9
3.8
DelLine
简介:删除光标所在的行
声明:procedure DelLine
说明:DelLine删除光标所在行,光标下的行往上移,在窗口最后插入一新行。光标不动。
另见:ClrEol,InsLine,ClrScr
例程:
Program Example5;
uses Crt;
{ 用以演示DelLine的功能的程序 }
begin
ClrScr;
WriteLn;
WriteLn(*第1行*);
WriteLn(*第2行*);
WriteLn(*第2行*);
WriteLn(*第3行*);
WriteLn;
WriteLn(*卧槽,怎么多写了个第2行,*,
*还不赶紧删掉!*);
GotoXY(1,3);
ReadKey;
DelLine;
GotoXY(1,10);
end.
2014年08月31日 06点08分 13
level 9
3.9
GotoXY
简介:设置光标在屏幕上的数字。
声明:procedure GotoXY(X: tcrtcoord;Y: tcrtcoord)
说明:GotoXY将光标定位在(X,Y)中,X在横向,Y方向相对于当前窗口的原点垂直。原点位于窗口(1,1),在左上角。
另见:WhereX,WhereY,Window
例程:
Program Example6;
uses Crt;
{ 用以演示GotoXY的功能的程序 }
begin
ClrScr;
GotoXY(10,10);
Write(*10,10*);
GotoXY(70,20);
` Write(*70,20*);
GotoXY(1,22);
end.
2014年08月31日 06点08分 14
level 9
3.10
HighVideo
简介:切换至高亮显示的文本模式
声明:procedure HighVideo
说明:HighVideo切换输出到高亮显示的文本(它设置视频属性的高强度位)
另见:TextColor,TextBackground,LowVideo,NormVideo
例程:
Program Example7;
uses Crt;
{ 用以演示HighVideo的功能的程序 }
begin
LowVideo;
WriteLn(*This is written with LowVideo*);
HighVideo;
WriteLn(*This is written with HighVideo*);
NormVideo;
WriteLn(*This is written with NormVideo*);
end.
2014年08月31日 06点08分 15
level 9
3.11
InsLine
简介:在插入光标所在位置的空行
声明:procedure InsLine
说明:InsLine在当前位置插入空行。光标下的行都往下移一行,删掉最后行。光标不动。
另见:ClrEol,DelLine,ClrScr
例程:
Program Example8;
uses Crt;
{ 用以演示InsLine的功能的程序 }
begin
ClrScr;
WriteLn;
WriteLn(*第1行*);
WriteLn(*第3行*);
WriteLn;
WriteLn(*卧槽,忘写第二行了!补上去!*);
GotoXY(1,3);
ReadKey;
InsLine;
Write(*第2行*);
GotoXY(1,10);
end.
2014年08月31日 06点08分 16
level 9
3.12
KeyPressed
简介:检查键盘缓冲区中是否存在按键
声明:function KeyPressed : Boolean
说明:KeyPressed扫描键盘缓冲区,如果一个键被按下则返回真(不包括Shift、Alt、Ctrl键)。函数并不读取该键,因此调用后仍可从缓冲区中读取。
另见:ReadKey
例程:
Program Example9;
uses Crt;
{ 用以演示KeyPressed的功能的程序 }
begin
Writeln(*等待,直到按下一个键*);
repeat
until KeyPressed;
{ 该键没有被读取,
所以应该还可以在命令行输出 }
end.
2014年08月31日 06点08分 17
level 9
3.13
LowVideo
简介:切换到低强度颜色。
声明:procedure LowVideo
说明:LowVideo切换输出非高亮显示的文本。(它清除视频属性的高强度位)
样例见HighVideo。
另见:TextColor,TextBackground,HighVideo,NormVideo
2014年08月31日 06点08分 18
level 9
3.14
NormVideo
简介:恢复正常(启动时)形式。
声明:procedure NormVideo
说明:NormVideo切换输出到默认设置,在启动时读取。(默认为在启动时的光标位置读取)
样例见HighVideo。
另见:TextColor,TextBackground,LowVideo,HighVideo
2014年08月31日 06点08分 19
level 9
3.15
NoSound
简介:停止系统音箱
声明:procedure NoSound
说明:NoSound停止扬声器的声音。此调用不支持的所有操作系统。
另见:Sound
例程:
Program Example10;
uses Crt;
{ 用以演示NoSound的功能的程序 }
var
i : longint;
begin
Writeln(*你会听到从扬声器一些音调*);
while (i<15000) do
begin
inc(i,500);
sound(i);
Delay(100);
end;
Writeln(*现在安静!*);
NoSound; {停止噪音}
end.
2014年08月31日 06点08分 20
level 9
暂时就这么多[呵呵]
未完待续~~~~~~~~
2014年08月31日 06点08分 21
orz还有
2014年08月31日 07点08分
回复 Fallen_Breath :readkey tb tc还没讲
2014年08月31日 07点08分
1 2 3 尾页