Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Corba. Нужен urgent help!!!!

6.6K
21 февраля 2004 года
serghei4
1 / / 21.02.2004
Моя проблема вот в чём:

Есть 2 маленьких программ сервер и клиент.
Задача сервера:
послать клиенту список обектов
Задача клиента:
получать от сервера этот список и отоброжать значения полученных обьектов!!!

Немогу никак понять мою ошибку

Немогу никак понять мою ошибку.Тоесть когда я пытаюсь отоброжать значения определёного свойство обекта из полученого списка то возбуждаеться исключительная ситуация.

Ниже показан мой код:

My idl file:
//------------------------------------
module Proba
{
interface Persoana
{
void Init(in string n,in string p, in short v);
readonly attribute string name;
readonly attribute string surname;
readonly attribute short age;
};

typedef sequence<Persoana> list_of_persons;

interface Dialog
{
string getmsg(in string msg);
list_of_persons ShowFriends();
};

};
//-------------------------------------------------

My code where i implement c++ class for Dialog interface:

//----------------------------------
Proba::list_of_persons* DialogImpl::ShowFriends()
{
//----Here i define a new person ---------
PersoanaImpl p; p.Init("Sse","r",22);

/*----Here i create a new sequence where i'll store person created above */

Proba::list_of_persons_var list=new Proba::list_of_persons;
list->length(1);
p._add_ref();

CORBA::Object_var ref = _default_POA()->servant_to_reference(&p);
Proba::Persoana_ptr q = Proba::Persoana::_narrow(ref);

list[0]=Proba::Persoana::_duplicate(q);
list[0]->_this();
return Proba::list_of_persons::_duplicate(list);


}
//----------------------------------

Below is my client program code where i try to acces function described above.The code is:
//----------------------------------
CORBA::ORB_var orb = CORBA::ORB_init(__argc, __argv);
PortableServer::ObjectId_var managerId = PortableServer::string_to_ObjectId("DLGManager");
Proba::list_of_persons_var tmp;

Proba::Dialog_var Fdialog;
Proba::Persoana_var Fpersoana;
Fdialog=Proba::Dialog::_bind"/dlg_poa",managerId);
tmp = Fdialog->ShowFriends();
Fpersoana=(Proba::Persoana *)tmp[0];
/* Here is raised an exception when i try to access age property of my Fpersoana object*/
String age = IntToStr(Fpersoana->_this()->age());

//---------------------------------------------------------

If you know what or where is my mistake please send me
your solution.
Or if you don't understand my problem it would great if you send me a simple example how can i send a sequence to client application and how can i access a property of
object stored in sequence!!!!

Спасибо за внимание.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог