Во-первых ты когда отправляешь текст, то добавляешь слово 'DATA' большими буквами:
Код:
buf := 'DATA#' + copy(s,1,2056);
А когда принимаешь, то сравниваешь со словом 'data' маленькими буквами:
Код:
if copy(s,1,length('data#')) = 'data#' then
memo1.lines.add(s);
Объясни.
Во-вторых в этом коде:
Код:
buf := 'DATA#' + copy(s,1,2056);
delete(s,1,length(buf));
Ты удаляешь из строки
s на 5 символов больше чем нужно.
Ну и замечание по поводу строки:
Код:
max := Round(Length(s) / 2056) + 1; // 2056 = 2kb
Это не правильно, у тебя часто будет посылаться лишний пакет (например при длине 2000 отправится 2 пакета вместо одного). Делай лучше так:
Код:
max := (Length(s) + 2055) div 2056; // 2056 = 2kb
Ну и конечно у тебя отправится больше чем 2056, за счёт добавления слова 'DATA#'
И какая у тебя версия Delphi?