resourceAvailable(res) указывает на доступность ресурса, поэтому программа просто зависает, так как ресурс доступен и resourceAvailable(res) всегда = true.
Помоему надо делать так:
var
buf:string;
begin
...
buf:='x';
while buf<>'' do
begin
buf := ReadLine(res);
s[2]:=buf;
line:=line+s[2];
end;
index := formAddString('Byte is: ' + line);