Вниз
Скачать: CL | DM;

Проблема с передачей сложных данных   Найти похожие ветки 

 
Airs ©   (2002-06-07 17:51) [0]

Есть клиент, есть сервер. Передаю такую переменную
type CPU = record
Architecture:Integer;
Count:Integer;
Level:Integer;
Revision:Integer;
Version:String;
ActiveProcessorMask:Integer;
CPUSpeed:String;
RealCPUSpeed:String;
end;
Передаю с использованием буфера т.е., на стороне клиента:
ClientSocket.Socket.SendBuf(CPUI,sizeof(CPUI));
Принимаю на стороне сервера:
ServerSocket.Socket.Connections[i].ReceiveBuf(CPUI,ServerSocket.Socket.Connections[i].ReceiveLength);

Где CPUI:CPU;
Выдает ошибку при присваивании например Label1.Caption:=CPUI.Version;

Если делаю структуру
type CPU = record
Architecture:Integer;
Count:Integer;
Level:Integer;
Revision:Integer;
Version:String[2];
ActiveProcessorMask:Integer;
CPUSpeed:String[2];
RealCPUSpeed:String[2];
end;
То все нормально.... Как справиться с этой проблемой?
Видимо не может передать по сокету большое кол-во байт? или в чем проблема?


 
Digitman ©   (2002-06-07 18:47) [1]

в том, что String - не тоже самое. что String[]
поле твоей структуры типа String хранит указатель на управляющую структуру существующей (в момент передачи) строки а АП передающего процесса, этот указатель ты и передаешь вместо собственно строки. А в АП принимающего процесса этот указатель - ничто !
Поле же типа String[] хранит именно саму строку, поэтому и передача/прием ее корректны.

Для передачи поля типа String необходимо передать сначала размер строки (Length), затем уже - собственно строку (PChar)



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.009 c
1-60638
WLAD
2002-08-08 03:21
2002.08.19
Проблема с чтением из типизированного файла


14-60797
Иван61
2002-07-22 22:04
2002.08.19
Достала порнуха. Что делать?


1-60571
Kolesya
2002-08-07 19:07
2002.08.19
как передать фокус


1-60733
bobr12
2002-08-07 10:12
2002.08.19
Как узнать имя компьютера на котором запущена программа?


3-60530
billybons
2002-07-30 09:58
2002.08.19
сортировка в DBLookupComboBox




   Наверх