Indy WriteLn 和 ReadLn 字符串的最大长度是多少?
What is Indy WriteLn and ReadLn string max length?
使用 Indy 方法 WriteLn
和 ReadLn
发送和读取的字符串的长度是否有限制?
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
中以供后续读取。
使用 Indy 方法 WriteLn
和 ReadLn
发送和读取的字符串的长度是否有限制?
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
中以供后续读取。