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

Вниз

Sokcet   Найти похожие ветки 

 
Kaginava ©   (2003-08-21 15:20) [0]

Доброе время суток всем!
Подскажите пожалуйста как посредством сокета передать(принять) запись
примерно такого вида

TclientRequest=record
a:integer;
b:single;
..
..
end;

вроде как принять передать текст получается, а запись непонятно как. Всем спасибо


 
Digitman ©   (2003-08-21 15:29) [1]

если TclientRequest не содердит полей, явл-ся динамическими структурами (а-ля String, array of чего-то и т.п), то

BytesSent := Socket.SendBuf(clientRequest, SizeOf(clientRequest));

+ обработка события OnWrite()


 
kaginava ©   (2003-08-21 15:30) [2]

а если содержит поля не являющиеся динамическими структурами, тогда как ?


 
kaginava ©   (2003-08-21 15:49) [3]

прошу прощения, я хотел спросить ,а если содержатся поля являющиеся динамическими массивами ?


 
Polevi ©   (2003-08-21 16:04) [4]

>kaginava © (21.08.03 15:49) [3]
тогда надо писать процедуру сериализации экз структуры в поток и обратно


 
kaginava ©   (2003-08-21 16:08) [5]

ясно, спасибо


 
Digitman ©   (2003-08-21 16:09) [6]

тогда одним SendBuf() не обойтись

для каждого такого поля необходимо передавать его характеристики - размерность, число элементов в каждой размерности и т.п., прежде чем передавать собственно буфер данных дин.структуры ... иначе как на принимающей стороне выделить под принимаемую дин.структуру память и воссоздать ее ? никак) .... только - так !

например, в случае передачи поля типа String (AnsiString) следует выполнить это в два "приема"

TclientRequest= PACKED record
..
str: string;
..
end;

var len: Integer;
clientRequest: TclientRequest;
...
len := Length(clientRequest.str);
socket.SendBuf(len, sizeof(len)); // длина строковых данных
socket.SendBuf(clientRequest.str[1], len); // собственно стр.данные



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
14-51500
MIKL
2003-09-28 12:13
2003.10.16
Помогите люди добрые!


14-51416
ZeroDivide
2003-09-25 16:08
2003.10.16
(с)Vuk Работает бригада... Каждый должен заниматься своим делом


14-51511
Zevsus
2003-09-24 13:37
2003.10.16
быстро сменить рабочую группу и ip адрес


3-51079
Брат
2003-09-26 13:44
2003.10.16
Как в запросе INSERT передать NULL?


6-51377
Blondin
2003-08-19 14:21
2003.10.16
idPOP3 - Coding table entry not found