Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

передача по сети массивов   Найти похожие ветки 

 
l_v   (2007-10-17 11:25) [0]

Еще раз Здраствуйте!
Вообщем возникла проблема, помогите ее решить...
Использую компоненты TServerSocket, TClientSocket. Объявление:
type
 Tffff = packed record
   X: double;
   Y: double;
   Z: double;
 end;

type
 TPaket = packed record
   .....
   ffff: array of Tffff;
 end;
 PPaket = ^TPaket;

var
 aaa: PPacket;

Отсылаю вот так:
GetMem(aaa,raz);
SetLength(aaa.ffff,raz1);
...........
Socket.SendBuf(aaa^,i);

Принимаю вот так:
Socket.ReceiveBuf(aaa^,razmer);
Но все нормально передается, никаких исключений и т.п., но вот на стороне сервера в этом ffff  одни нули, хотя в клиенте вроде все пишется в эту структуру...
Не подскажете как правильно так сделать? В чем моя ошибка?


 
Reindeer Moss Eater ©   (2007-10-17 11:26) [1]

ffff - это ссылка


 
l_v   (2007-10-17 11:33) [2]


> Reindeer Moss Eater

но как тогда быть, потому как в процессе всегда требуется изменять размер массива?


 
Сергей М. ©   (2007-10-17 11:39) [3]


> но как тогда быть


Отправлять не ссылку, а данные, расположенные по адресу в ссылке.


 
Reindeer Moss Eater ©   (2007-10-17 11:44) [4]

но как тогда быть

С такими структурами данных потребуется разрабатывать прикладной протокол обмена.


 
Slym ©   (2007-10-17 12:21) [5]

type
T3DPoint = packed record
  X,Y,Z: double;
end;

P3DPoints=^T3DPoints;
T3DPoints=packed array[0..0] of T3DPoint;

PPacket = ^TPacket;
TPacket = packed record
  //..
  PointsCount:integer;
end;

procedure Otpravka;
var
 aaa: PPacket;
 Points: P3DPoints;
begin
 //...
 GetMem(Points,SizeOf(T3DPoint)*aaa.PointsCount);
 //Заполняем
 Socket.SendBuf(aaa,SizeOf(aaa));
 Socket.SendBuf(Points^,SizeOf(T3DPoint)*aaa.PointsCount);
 FreeMem(Points);
end;

procedure Priem;
var
 aaa: PPacket;
 Points: P3DPoints;
begin
 Socket.ReceiveBuf(aaa,SizeOf(aaa));
 if aaa.PointsCount>0 then
 begin
   GetMem(Points,SizeOf(T3DPoint)*aaa.PointsCount);
   Socket.ReceiveBuf(Points^,SizeOf(T3DPoint)*aaa.PointsCount);
 FreeMem(Points);

end;


 
Slym ©   (2007-10-17 12:32) [6]

или
type
T3DPoint = packed record
  X,Y,Z: double;
end;
TPoints=array of T3DPoint;
TPacket = packed record
  //...
  Points:TPoints;
end;

procedure SendPacket(const Packet:TPacket);
var i,c:integer;
begin
 Socket.SendBuf(Packet,SizeOf(Packet)-SizeOf(Packet.Points));
 c:=Length(Packet.Points);
 Socket.SendBuf(c,SizeOf(c));
 for i:=Low(Packet.Points) to High(Packet.Points) do
   Socket.SendBuf(Packet.Points[i],SizeOf(T3DPoint));
end;

procedure ReceivePacket(var Packet:TPacket);
var i,c:integer;
begin
 Socket.ReceiveBuf(Packet,SizeOf(Packet)-SizeOf(Packet.Points));
 Socket.ReceiveBuf(c,SizeOf(c));
 SetLength(Packet.Points,c);
 for i:=Low(Packet.Points) to High(Packet.Points) do
   Socket.ReceiveBuf(Packet.Points[i],SizeOf(T3DPoint));
end;



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

Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
15-1191050748
x.pro
2007-09-29 11:25
2007.11.11
Проблема с формами... или руками моими...


2-1192705466
9899100
2007-10-18 15:04
2007.11.11
список полей


15-1190738277
Fleg
2007-09-25 20:37
2007.11.11
WinAPI


2-1192968712
AlexanderMS
2007-10-21 16:11
2007.11.11
Как узнать, что Word установлен?


6-1154718907
Tiberius
2006-08-04 23:15
2007.11.11
Заполнение html-форм





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский