read( ),readln( ),writeln() ,write( )有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了read( ),readln( ),writeln() ,write( )有啥区别?相关的知识,希望对你有一定的参考价值。

偶学object pascal,语法中用到了以上几个函数,不知道它们有什么区别喃?望大虾指点!

read()指从标准输入流(一般是键盘咯)读取一个字符,并作为函数的返回指,如果没从键盘输入更多的字符,则为-1,可以简单的理解为从键盘输入字符
readln()的功能与read()相同,只是它能换行,即它读取的是一行的字符
write()是输入字符,既从屏幕显示
writeln()是显示一行的字符,即相当于换行的功能
关于它们之间的具体差别,你可以亲自上机操作,可能会更容易理解!!!
参考技术A read()和write()就是不换行输入和输出
另外两个就是要换行的哈~都用的比较多~根据需要来选择~
呵呵~就这样
参考技术B 在WRITE和READ后面加了-LN就会自动换行
例如:
WRITE("1");
WRITE("2");
输出: 12
WRITELN("1");
WRITELN("2");
输出:
1
2
参考技术C read( )自动换行
write( )
readln( ) 不换行
writeln()

Indy WriteLn 和 ReadLn 字符串的最大长度是多少?

【中文标题】Indy WriteLn 和 ReadLn 字符串的最大长度是多少?【英文标题】:What is Indy WriteLn and ReadLn string max length? 【发布时间】:2022-01-19 13:24:14 【问题描述】:

使用 Indy 方法 WriteLnReadLn 发送和读取的字符串长度是否有限制?

【问题讨论】:

【参考方案1】:

TIdIOHandler.WriteLn() 仅受可用内存限制。但是,请注意,它将EOL (#13#10) 附加到输入字符串的末尾,生成一个作为原始副本的新字符串,然后将该副本转换为TIdBytes 以进行发送。因此,将使用更多的内存,而不仅仅是您传入的内存。我相信这在未来可以得到更好的优化。

TIdIOHandler.ReadLn() 有一个可选的AMaxLineLength 参数,默认设置为-1。如果设置为< 0,则将使用TIdIOHandler.MaxLineLength 属性,默认设置为16384 字节。如果需要,您可以将(A)MaxLineLength 设置得更高,或者您甚至可以将其设置为0 以完全禁用限制。如果(A)MaxLineLength 设置为> 0 并且传入的数据超过该限制,则后续行为取决于TIdIOHandler.MaxLineAction 属性:

maException(默认值):引发EIdReadLnMaxLineLengthExceeded,接收到的字节将保留在TIdIOHandler.InputBuffer 中以供后续读取。

maSplit:精确的(A)MaxLineLength字节数将从TIdIOHandler.InputBuffer中提取并作为String返回,TIdIOHander.ReadLnSplit属性将设置为True。剩余字节将保留在TIdIOHandler.InputBuffer 中以供后续读取。

【讨论】:

感谢您准确详细的回复。我还有一个问题,不知道要不要再开个帖子:TCPClient->IOHandler->MaxLineLength = 0;TCPClient->Socket->MaxLineLength = 0;有什么区别?我的意思是:使用SocketIOHandler 之间的区别。看来我可以在同一个地方以同样的方式使用两者。 @user3680100 "[IOHandler] 和 [Socket] 有什么区别?" - 当IOHandler 被分配一个TIdIOHandlerSocket 派生对象时,@987654352 @ 设置为同一个对象,否则设置为nil。所以Socket 只是一个快捷方式,可以避免在需要访问特定于套接字的功能时必须对IOHandler 进行类型转换。 当我设置TCPClient->IOHandler->MaxLineLength = 0;TCPClient->Socket->MaxLineLength = 0; 我得到错误Project CMRemoteViewer.exe raised exception class $C0000005 with message 'access violation at 0x0041b484: write of address 0x000000b8'. 对不起.....我搞砸了 cmets....不知道要删除什么而不造成其他损害...我道歉 我发现错误:设置属性MaxLineLength时TCPClient未连接

以上是关于read( ),readln( ),writeln() ,write( )有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

控制台程序设计

在linux中write和writel的区别

Delphi XE8报错:There is no overloaded version of 'ReadLn' that can be called with these argume

delphi枚举类型值的问题

JAVA的输入

20161116 输入两个自然数,求它们的和