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

Вниз

передача строки через Indy UDP   Найти похожие ветки 

 
uniken1 ©   (2011-01-27 15:50) [0]

Delphi 2010!
Код на стороне клиента:
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
s:="Test Message";
IdUDPClient1.Send(Edit1.Text,9999,s);;
end;

Код на стороне сервера:
procedure TForm1.UDPServerUDPRead(AThread: TIdUDPListenerThread; AData: TBytes;
 ABinding: TIdSocketHandle);
 var i:integer;
begin
 for I := 0 to length(AData) - 1 do
   Caption:=Caption+chr(AData[i]);
end;

Этот код работает, но почему отправляемая строка в юникоде (на сколько я понял в 2010 тип string это юникод), а принимаемая в анси? Это я что-то не так настроил или это особенность работы Indy?


 
12 ©   (2011-01-28 09:43) [1]

отправляется string, юникод
а принимается как chr(

http://www.webdelphi.ru/2009/10/delphi-2010-rabota-s-klaviaturoj-v-usloviyax-unicode/

не то?


 
Anatoly Podgoretsky ©   (2011-01-28 09:54) [2]

Что за тип такой chr


 
uniken1 ©   (2011-01-28 10:58) [3]

UDPClient отправляет в процедуре Send строку, в D2010 она юникод.
UDPServer получает эту строку в массив AData.

chr -это стандартная функия(существует еще с паскаля) преобразования byte в char. Это не тип!


 
Anatoly Podgoretsky ©   (2011-01-28 11:28) [4]

Я отлично знаю, что это функция.
Тогда зачем ты это делаешь    Caption:=Caption+chr(AData[i]);
Byte не имеет отношения к Юникод!!!


 
uniken1 ©   (2011-01-28 11:59) [5]

Может я что-то не так объясняю?
На выходе строка юникод: 12 символов (24 байта)
На входе массив : 12 байт которые преобразуются в 12 символов с!!

внутри массива ansi строка, которую я вывожу в заголовок формы с помощью функции chr, ну я уже не знаю как еще объяснить что в  send передается юникодная строка в Read принимается ansi строка.


 
Сергей М. ©   (2011-01-28 12:13) [6]

> в  send передается юникодная строка

А в потрохах Send"а она поди конвертируется в Ansi
Или уже на принимающей стороне принятая юникодовая строка конвертится в ansi до того как попасть через TBytes в твой обработчик.
Вот и все чудеса)
А чудес в Инди и без этого хватает, так что наблюдаемое тобой "чудо" - это еще невинная индейская шалость по сравнению с другими грабельками, граблями и граблищами.


 
12 ©   (2011-01-28 12:27) [7]

ух ты..

а точно?

это не работает?

procedure TForm1.btn1Click(Sender: TObject);
begin
 idpclnt1.Send("127.0.0.1",5555,"Ёкарный бабай");
end;

procedure TForm1.idpsrvr1UDPRead(Sender: TObject; AData: TStream;  ABinding: TIdSocketHandle);
begin
 mmo1.Lines.LoadFromStream(AData);
end;


 
RWolf ©   (2011-01-28 12:44) [8]


> Сергей М. ©   (28.01.11 12:13) [6]

а вот где бы ознакомиться с граблями Indy, хотя бы частично?
а то у меня через неё в одной программе HTTP-контент раздаётся интенсивно, хотелось бы заранее ознакомиться, чтобы неожиданно по лбу не ударило.


 
Сергей М. ©   (2011-01-28 13:02) [9]


> RWolf ©   (28.01.11 12:44) [8]


http://www.indyproject.org/Sockets/Bugs.en.aspx

Самое улыбнутое там: "Тупые юзеры затрахали систему публичных баг-репортов своими дурацкими и непродуманными вопросами, поэтому отныне пусть в поисках правды парятся на разного пошиба форумах"


 
uniken1 ©   (2011-01-28 13:07) [10]


> ух ты..
>
> а точно?
>
> это не работает?
>
> procedure TForm1.btn1Click(Sender: TObject);
> begin
>  idpclnt1.Send("127.0.0.1",5555,"Ёкарный бабай");
> end;
>
> procedure TForm1.idpsrvr1UDPRead(Sender: TObject; AData:
>  TStream;  ABinding: TIdSocketHandle);
> begin
>  mmo1.Lines.LoadFromStream(AData);
> end;

Этот код работал до 2010. В 2010 сам метод имеем другие параметры:
UDPServerUDPRead(AThread: TIdUDPListenerThread; AData: TBytes;
ABinding: TIdSocketHandle);


 
uniken1 ©   (2011-01-29 08:11) [11]

Хм, раньше здесь помогали...
Хорошо хоть официальном сайте объяснили все нормально
http://forums2.atozed.com/viewtopic.php?f=7&t=18617&p=22110#p22110



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

Форум: "Начинающим";
Текущий архив: 2011.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1286406735
Кто б сомневался
2010-10-07 03:12
2011.05.01
Синхронизация


2-1295611018
Mops
2011-01-21 14:56
2011.05.01
GET запрос


2-1295808004
faiwer
2011-01-23 21:40
2011.05.01
Макрос


15-1295268013
И. Павел
2011-01-17 15:40
2011.05.01
Может ли HTML-страница сохраниться на локальной машине


2-1295978254
caHek
2011-01-25 20:57
2011.05.01
Delphi авторизация на сайте, и .....





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