Я пока использую такую обертку:
function ReadData(DataLength: Integer): String;
//прием строки
var
l: Integer;
s, tmp: String;
begin
l := DataLength;
s := '';
while l > 0 do
begin
tmp := binsock.read_bin(l);
if tmp = '' then
begin
s := 'ERROR';
Break;
end;
s := s + tmp;
l := binsock.available;
if l = -1 then
begin
s := 'ERROR';
Break;
end;
end;
ReadData := s;
end;
Но я никогда и не вызываю чтение данных с DataLength = 0.
Может так и сделать? - в случае ошибки возвращать пустую строку и ввести запрет на вызов чтения данных нулевой длины?