The TAB character is #9, NOT #10: that is a linefeed (LF).(that is the same in C, btw)
It ignores the linefeed, because it is not needed for readln, depending on platform. You can use the predefined constant sLineBreak for cross-platform use.(or sLineEnding, which is the same)
These resolve to #13#10 on Windows and DOS and family and just #10 on Unix. On the windows/dos family readln does not have to read the #10 part if #13 is encountered. #13 means CR, a carriage return, again same in C.
Things change a bit when you are misusing strings to read binary data which is a common mistake that people coming from C make.
you can not assume * char is binary data, since char refers to a Pascal char, not a byte. If that is what you need report back and I write you a simple example on how to handle binary data that assumes * char in C.