Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
Андреев   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.01 c
4-12205
ZEE
2003-11-04 15:09
2004.01.05
TextHeight без TCanvas


6-12024
Ната
2003-11-02 08:54
2004.01.05
Как программно отправить письмо с аттачем?


1-11893
Drakon
2003-12-17 23:22
2004.01.05
Tray


1-11921
ASt
2003-12-21 04:12
2004.01.05
Title в DBGrid


1-11993
sevgen
2003-12-19 07:18
2004.01.05
Left, Right





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский