![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача типа рекорд с помощью TCLientSocket/TServerSocket
RagE © (2004-07-14 15:48:00)Подскажие плиз как передавать типа record а то у меня какая то лажа приходит. Отправляю с помощью SendBuf принимаю ReceiveBuf
размер структуры 292 байта. Переданная и принятая инфа не совпадают вовсе
RagE (2004-07-14 16:36:00) [1]Всем спасибо проблему решил. Вся проблема была в том что я принимал структуру в PChar который мне потом дров и наламывал
Анонимщик (2004-07-14 16:28:00) [2]Это смотря как потом заливать.
Ну ладно, будем считать, что я неправильно угадал.
Григорьев Антон (2004-07-14 16:23:00) [3]
> SendBuf(aMR, SizeOf(TMyRec)); // сколько будет отправлено?
Будет отправлено ровно столько, сколько структура занимает в памяти. Если она не упакована, то в её размер будет включен и размер выравнивающих байт. Главное, чтобы на обеих сторонах выравнивание было одинаковым.
Reindeer Moss Eater (2004-07-14 16:20:00) [4]Тогда относится? Проблема - в SizeOf.
не относится ни грамма.
Анонимщик (2004-07-14 16:19:00) [5]А если так:
TMyRec = {packet} record
b: Byte; // 1 байт
i: Integer; // 4 байта
end;
var
aMR: TMyRec;
begin
SendBuf(aMR, SizeOf(TMyRec)); // сколько будет отправлено?
end;
Тогда относится? Проблема - в SizeOf.
Григорьев Антон (2004-07-14 16:13:00) [6]
> Анонимщик © (14.07.04 16:04) [2]
> Нужно использовать
> packet record
Это к делу не относится. Неупакованная запись приведёт к лишнему трафику, но не к искажениям.
А может, в записи есть string или динамические массивы?
Анонимщик (2004-07-14 16:04:00) [7]Нужно использовать
packet record
Digitman (2004-07-14 15:53:00) [8]код покажи