Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Внизrecord c case Найти похожие ветки
← →
Scot Storch (2009-11-12 11:19) [0]Можно ли не указывать фактический размер для переменной string
type
PRequestMsg = ^TRequestMsg;
TRequestMsg = record
From: string;
Msg: string;
case IsPrivate: Boolean of
True: (
To_: string[255]
);
end;
← →
Сергей М. © (2009-11-12 11:35) [1]Нельзя, если установлен крыжик Huge Strings в опциях компилятора в св-вах проекта
← →
Scot Storch (2009-11-12 11:45) [2]Отключать опции в настройках компилятора что-то желания нет. Может дадите совет как лучше организовать передачу запросов между клиентом и сервером. Пока что попытался сделать ввиде одного общего record c case, вот как-то так:
PRequest = ^TRequest;
TRequest = packed record
case Id: Integer of
0: (Name : string[16];); // connect
1: (From : string[16]; // send message
Msg : string[255];
case IsPrivate: Boolean of
True: (_To : string[16];););
3: (Users: strings[255]); // update users
end;
Не устраивает указание размерности.
← →
Григорьев Антон © (2009-11-12 12:38) [3]А зачем передавать фиксированную структуру на все случаи жизни? Сначала передаёте, например, номер типа пакета, потом все данные, которые относятся к данному типу. А получатель сначала читает тип пакета, а потом по очереди все данные, которые относятся к пакету данного типа.
А в вашем случае получается, например, что в пакете типа 0 всего 21 байт полезный, а ещё 274 - лишний хвост, который имеет смысл только для пакета типа 1. Перерасход трафика в 14 раз. Не жалко?
Кстати, если вы думаете, что запихнув обычный string (без указания размера) в record и передав этот record по сети, вы передадите строку, то сильно заблуждаетесь. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1206#06
← →
Сергей М. © (2009-11-12 12:47) [4]
> как лучше организовать передачу
На стороне передатчика:
1. Передать размер данных
2. Передать сами данные
На стороне приемника:
1. Принять размер данных
2. Принять сами данные размера, полученного в п.1
← →
Anatoly Podgoretsky © (2009-11-12 13:24) [5]
> Можно ли не указывать фактический размер для переменной
> string
Можно и это легко проверить.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c