Главная страница
    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.021 c
14-12060
Сатир
2003-12-10 17:27
2004.01.05
Ура! Нам канал подняли!


4-12192
Joye
2003-11-05 10:45
2004.01.05
Запрет открытия дверцы CD-ROM


14-12063
sdan
2003-12-10 12:02
2004.01.05
Help MSDN


1-11898
Anton.
2003-12-17 15:37
2004.01.05
Разбор текста


1-11897
denis24
2003-12-18 13:05
2004.01.05
winexec( net use LPT1: las oki ,SW_hide );





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский