Цитата Сообщение от capzap Посмотреть сообщение
смысл от этой строки, если до этого каждый цикл, переменной size будет присваиваться 0 либо 1. Друго дело если Вы накапливаете size, то и вычитать тогда нужно не 1 а size-прочитанных байт.

Хотели услышать ответ, честно говорю не смотрел Ваш проект, вернусь домой попытаюсь открыть
Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), 1, 0)); (* запрос на чтение одного байта *)

if ( size > 0 ) then (* если прочитали один байт, пробуем прочитать остальное *)
(* здесь size равно 1 *)
size := size + DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf[ 1 ]), SIZEOF(rBuf) - 1, 0));
end_if