是否有字串的長度的限制發送,并與印方法讀取WriteLn和ReadLn?
uj5u.com熱心網友回復:
TIdIOHandler.WriteLn()僅受可用記憶體的限制。但是,請注意,它將EOL( #13#10)附加到輸入字串的末尾,生成一個新字串,它是原始字串的副本,然后將該副本轉換為 aTIdBytes以進行發送。所以將使用更多的記憶體,而不僅僅是你傳入的記憶體。我相信這在未來可以得到更好的優化。
TIdIOHandler.ReadLn()有一個默認AMaxLineLength設定為的可選引數-1。如果設定為< 0,TIdIOHandler.MaxLineLength則將使用該屬性16384,默認設定為位元組。(A)MaxLineLength如果需要,您可以設定更高,或者您甚至可以將其設定為0完全禁用限制。如果(A)MaxLineLength設定為> 0并且傳入資料超過該限制,則后續行為取決于TIdIOHandler.MaxLineAction屬性:
maException(默認):anEIdReadLnMaxLineLengthExceeded被引發,接收到的位元組將保留在TIdIOHandler.InputBuffer后續讀取中。maSplit:(A)MaxLineLength將從 中提取確切位元組數TIdIOHandler.InputBuffer并作為 a 回傳String,并且該TIdIOHander.ReadLnSplit屬性將設定為True。剩余的位元組將保留在TIdIOHandler.InputBuffer后續讀取中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389455.html
