Текущий архив: 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.46 MB
Время: 0.003 c