![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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()