I looked at the "ReadLine" Method, That code is an absolute mess!
It looks like that was work of a rework , several patch jobs just to get someone's code running..
in the end its still a mess
also, using a procedure was an unfortunate choice because you have no way to know if the string being returned is a partial due to not having all of the input to complete a line.
Technically it should return 0 length in that case and some sort of a flag indicating that a partial is waiting..
Also, it looks like it can get caught between line endings etc..
Yup, its a real mess. and to top it off, this is a base component for others from the looks of it.
I do not know how Delphi's version behaves in cases like this but its a crying shame the way this code is laid out because when I saw you post that it gave me the idea of using it for a project of mine in Delphi because I wrote such a routine not knowing this already existed but after closely examining this one, I have second thoughts of using it.
If I knew what the expected results is suppose to be on partial lines in the que than I could rewrite that whole block of code into something more appropriate.
P.S.
Looking at MSDN and Delphi docs it looks like the ReadLine is suppose to be a Function not a procedure..
It would be easy to add a function to do this however, the compiler I don't think can tell the difference between a function and procedure if memory serves, it takes the first one it finds and ignores the other.
Also it seems the unit is missing functionality, maybe a new unit of strictly StreamReader. Write should be created.