Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IdMappedPortUDP: считать месагу вручную =) [D7, WinXP]


n00b T_T ©   (2009-02-05 13:18:00) 

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

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


...
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 компонент), он нормально создаётся...
но из за нехватки опыта хрен знает как проводить чтение =(
если кто-либо сталкивался с данной проблемой, или знает что нужно сделать, дайте пожалусто намёк)


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

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


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

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

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

My MemoryStreamVariable.Memory^


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

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


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

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

function ReceiveBuffer( var ABuffer; const ABufferSize: Integer

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


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


> EAcessViolation


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


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


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

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


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


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

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

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


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


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


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

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

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


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

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


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


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


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


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

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

var
...
Adata :TStream;


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо