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

Вниз

IdMappedPortUDP: считать месагу вручную =)   Найти похожие ветки 

 
n00b T_T   (2009-02-05 13:18) [0]

Здравствуйте господа програмёры.... возникла следующая проблема:
неообходимо вручную считать любую пришедшую месагу...

общий вид проги:


...
var  
udp:IdMappedPortUDP.TIdMappedPortUDP;
Msg: TMsg;
WhEvent:THandle;

begin
udp:=  TIdMappedPortUDP.create(nil);
udp.Active :=false;
udp.BroadcastEnabled := false;
udp.BufferSize :=8192   ;
udp.DefaultPort := <port>;
udp.ThreadedEvent := false;
udp.ReceiveTimeout:=1;
WhEvent:=CreateEvent(nil,true,false,"et");
while must_dead=false do
 begin
  <ТЕЛО ПРОГИ>+
  translatemessage(msg);
  waitforsingleobject(WhEvent,10);
  dispatchmessage(msg);
 end;
end.

Как видите используем INDY компонент), он нормально создаётся...
но из за нехватки опыта хрен знает как проводить чтение =(
если кто-либо сталкивался с данной проблемой, или знает что нужно сделать, дайте пожалусто намёк)


 
Сергей М. ©   (2009-02-05 13:53) [1]

Для этого предусмотрены методы
ReceiveBuffer()
ReceiveString()


 
n00b T_T   (2009-02-06 23:34) [2]

поместил в <ТЕЛО ПРОГИ> следующий фрагмент:
udp.ReceiveBuffer(Adata,udp.BufferSize   );
......
фаталит уже при использовании например showmessage(inttostr(Adata.Size));
или вообще при любом обращении к Adate.

var
...
Adata :TStream;


 
Сергей М. ©   (2009-02-06 23:55) [3]


> фаталит уже..при любом обращении к Adate


Вот и разберись для начала, почему у тебя "фаталит" что-то, не имеющее вообще никакого отношения к Инди)


 
n00b T_T   (2009-02-07 00:34) [4]

так дапустим даже если Adata будет string, 1 фиг потом при любом обращении к ней фатал...
чёто я както криворуко закриатил TIdMappedPortUDP.... скорее всего)))


 
Сергей М. ©   (2009-02-07 00:40) [5]


> даже если Adata будет string .. при любом обращении
> к ней фатал


Да не трынди уже)

Так уж и при любом уж ?)

Кстати, а что это за зверь такой  - "фатал" ?


 
n00b T_T   (2009-02-07 01:34) [6]

Exception EAcessViolation in module  и т.д. и т.п.

да и при любом.... хоть при использовании например length(Adata), еси адата -стринг


 
Сергей М. ©   (2009-02-07 18:04) [7]


> EAcessViolation


Это не "фатал".
"Фатал" - это когда непоправимая беда приключилась)


> хоть при использовании например length(Adata), еси адата
> -стринг


Вот тебе пример "любого" использования:

procedure AnyUsageOfString;
var
 Adata: String;
begin
 ShowMessage(Length(Adata));
end;


"Ноль" вижу, "фатал" не вижу.
Чтоя делаю не так ?)


 
Сергей М. ©   (2009-02-07 18:47) [8]

Вот декларация метода:

function ReceiveBuffer(var ABuffer; const ABufferSize: Integer

Где ты здесь увидел стрим или стринг ?


 
n00b T_T   (2009-02-08 22:10) [9]

А чего туда надо?))))
какой тип лучше употребить в качестве Abuffer-а ?


 
Сергей М. ©   (2009-02-09 08:26) [10]

Если string, то
PChar(MyStringVariable)^

Если стрим, то

MyMemoryStreamVariable.Memory^


 
n00b T_T   (2009-02-11 15:19) [11]

большое спс =)))



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1286748616
Германн
2010-10-11 02:10
2011.02.06
Инструмент для редактирования иконок


6-1233828325
WebBrowser+ table
2009-02-05 13:05
2011.02.06
работа с таблицами


2-1289811718
на4инающий
2010-11-15 12:01
2011.02.06
парсинг имени файла


3-1252485463
Xmen
2009-09-09 12:37
2011.02.06
Unable to determine field names


6-1233563581
vegarulez
2009-02-02 11:33
2011.02.06
Вопрос про разбор параметров запроса.