( необязательно: )массив по-больше сделай Buff: array [0..1024] of char; и вот это вроде надо до цикла поставить timeout.tv_sec:=10; if (select(0, @rfds, nil, nil, @timeout) <= 0) then exit;
в коде вижу куски из разных источников, предлагаю всё-таки поучить матчасть по сокетам, сразу отпадуут все вопросы: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021 http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1060 и явные косяки: Result.Add(String(buff)); - буфер нада или очищать перед чтением, или пихать 0 в конец, если прочитано было меньше размера буфера.