Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Код нулевого символа   Найти похожие ветки 

 
Андреев   (2003-12-09 19:38) [0]

Нужно по сети передать данные от Клиента к Серверу.

В Клиенте пишу строчку:
ClientSocket.Socket.SendText(#2 + #65 + #0 + #3 + #66);

В Сервере:
k:= Socket.ReceiveLength;
Memo2.SelText:= Socket.ReceiveText;

После пересылке вижу что к=5
а в мемо2 принято только первые два символа, то есть #0 и всё что после него не отображается
Проверял что передаются все коды от #1 до #255 а вот #0 нет.
Что делать? Может какимто другим способом предавать данные?


 
Polevi ©   (2003-12-09 19:43) [1]

SendBuf, RecvBuf


 
FBI ©   (2003-12-10 07:08) [2]

Попробуй переставить местами #0 и #66, и отправь клиенту, если в мемо клиент будет четыре символа, значит, что-то с твоим #0


 
Anatoly Podgoretsky ©   (2003-12-10 07:37) [3]

Нафиг в мемо гнать не текстовые символы.


 
S@shka ©   (2003-12-10 12:41) [4]

Дело в том, что в
в переменныю типа String ты можешь засунуть все что угодно
temp : String = #77 + #22 + #35 + #0 + #55 и. т.д
Но !!!! при отображении этого всего в Memo или в Edit
у тебя обрежется все что за знаком #0 Спросишь почему???
Да потому что Null Terminated String есть такое понятие :)
а знак #0 - есть признак конца таки вот строк. Вот и веьс секрет


 
Андреев   (2003-12-10 16:39) [5]

То что #0 это признак конца стринговой переменной я понял.

Но проблема осталась.
Я хотел использовать
ClientSocket.Socket.SendText(#2 + #65 + #0 + #3 + #66);
Но из-за #0 надо придумать что-то другое.
Подскажите пожалуйста как это надо сделать.
Очень надо.


 
Digitman ©   (2003-12-10 17:01) [6]

ты вот скажи, начерта тебе #0 посылать ? никак я в толк не возьму))


 
Rouse_ ©   (2003-12-10 17:16) [7]

> [5] Андреев (10.12.03 16:39)
Эксперементируй с советом Polevi (09.12.03 19:43)и не задавай глупых вопростов...


 
Fredericco ©   (2003-12-10 18:03) [8]

Андреев (10.12.03 16:39) [5]

> То что #0 это признак конца стринговой переменной я понял.

Как ты это понял?
Это признак окнца PChar, TCaption но ни как не String.
Твой нолик к тебе приходит, но проверять надо приблизитеьно так:
var
s,s2:string;
i:integer;
begin
s:= Socket.ReceiveText
s2:="";
for i:=1 to Length(s) do
s2:=s2+"#"+IntToStr(Ord(s[i]));
Memo1.Lines.Add(s2);


 
Fredericco ©   (2003-12-10 18:05) [9]


> После пересылке вижу что к=5
> а в мемо2 принято только первые два символа, то есть #0
> и всё что после него не отображается

Исчерпывающий ответ на твой вопрос.


 
skr   (2003-12-10 18:07) [10]

господа вопрос серьезный - при написании сетевых прог
пользуйте сокетные компоненты на серваках в режиме ServerType = stThreadBlocking, и стартуйте для каждого коннекта нить, иначе данные перекашивает вот!
далее валете в поток что угодно :))

А в методе SendText -ReceiveText теоретически должен произойти переход на другую строку :)

А герр Андреев просто этого не знал, как и ВЫ все :))


 
Digitman ©   (2003-12-10 18:10) [11]


> пользуйте сокетные компоненты на серваках в режиме ServerType
> = stThreadBlocking


полная чушь.
никакого отношения режим раброты TServerSocket к "нулям" не имеет


 
Андреев   (2003-12-10 21:02) [12]

При работе с устройством на прямую через RS232 я использовал
ComPort.WriteString (#1 + #0 + #64 + #44 + #13);
и всё работает.
Но задача в том что надо управлять дистационно используя TCP\IP и #0 создаёт проблему.
Может надо использовать SendStream?
Как это правильно сделать?
А Memo я использую для визуального контроля передачи данных.


 
panov ©   (2003-12-10 21:32) [13]

http://delphimaster.net/view/6-1069862324/
Ответ там уже дан.


 
Андреев   (2003-12-11 19:30) [14]

Воспользовался
begin
s:= Socket.ReceiveText;
s2:="";
for i:=1 to Length(s) do
begin
s2:=s2+" "+IntToStr(Ord(s[i]));
Memo1.SelText:=s[i];
end;
Memo2.Lines.Add(s2);
Теперь в Мемо1 вижу принимаемые символы, а в Мемо2 коды этих символов.
Спасибо за помощь.



Страницы: 1 вся ветка

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
1-11978
афвуд
2003-12-19 12:21
2004.01.05
Как создать обьект класса, зная только имя класса.


1-11883
hokka
2003-12-18 13:59
2004.01.05
Проблемы с кодировкой


14-12037
Undert
2003-12-11 11:12
2004.01.05
SQL: Как узнать запросом, какой был последний AutoInc ?


14-12130
SPeller
2003-12-13 14:43
2004.01.05
Тем, у кого браузер НЕ IE, или IE меньше 6-й версии


14-12169
Soft
2003-12-10 23:17
2004.01.05
Проверка правописания украинских слов.