telepath |
Отправлено: 05.10.2004, 10:00 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
Не подскажете?
Подозреваю что через Socket->SendBuf но что-то не получается |
|
Guest |
Отправлено: 05.10.2004, 10:13 |
|
Не зарегистрирован
|
Преобразовать к строке. передать. развернуть в структуру. |
|
telepath |
Отправлено: 05.10.2004, 10:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
Хм... А вот так можно?
CODE |
TList* recs = new TList();
Socket->SendBuf((void*)recs,sizeof(recs)+1);
| |
|
Guest |
Отправлено: 05.10.2004, 10:38 |
|
Не зарегистрирован
|
А попробовать слабо?
TList енто список указателей. На что они будут указывать у приемника? Если нуно массив целых чисел, то так и пишите, а если TList — то без дополнительного описания элементов списка не обойтись. |
|
telepath |
Отправлено: 05.10.2004, 10:56 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 132
|
Есть класс TClass, нужно передать кучу таких классов собранных в TList за одну передачу
CODE |
TList* list = new TList();
TClass* myclass = new TClass();
list->Add(myclass);
|
Как можно этот TList передать (вместе с содержащимися в нем объектами) через сокет и принять? |
|
Konstantine |
Отправлено: 05.10.2004, 11:13 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
QUOTE (telepath @ 05/10/2004, 11:30) | Хм... А вот так можно?
CODE |
TList* recs = new TList();
Socket->SendBuf((void*)recs,sizeof(recs)+1);
|
|
ну и шо ты будешь делать на удалённой машине с указателем с этого???
на самом деле — создавай протокол передачи — самый простой — какой-то символ, который будет строки разделять, передавай этот буфер, а там рассшифровуй
|
|
Guest |
Отправлено: 05.10.2004, 11:21 |
|
Не зарегистрирован
|
Что то вроде такого
На стороне источника
AnsiString text = ClassName1 + "\n" + ClassName2 + "\n" + ...
На стороне приемника
TList *list = new TList();
TStringList *slist (полученная строка)
TClass1 *pc1;
TClass2 *pc2;
AnsiString classname;
...
for (int i=0; i < slist->Count; i++)
{ classname = slist->Items[i];
if (classname == "Class1") { pc1 = new TClass1; list->Add(pc1); }
else if (classname == "Class2") { pc2 = new TClass2; list->Add(pc2); }
PS. Осмелюсь еще раз напомнить — TList хранит только УКАЗАТЕЛИ. А вам скорее всего нужно передать начинку ваших объектов. Для этого нужен другой метод.
...
} |
|