Показать сообщение отдельно
  #6  
Старый 20.08.2012, 09:56
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Во-первых ты когда отправляешь текст, то добавляешь слово '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?
Ответить с цитированием