Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Передача динамического массива SOAP


Автор: rainebove 11.12.2009, 17:59
Здравствуйте! Есть готовый интерфейс, в нем объявлены 2 типа данных:
Код

typedef DynamicArray<Variant>  ArrOfVar;
typedef DynamicArray<String>  ArrString;

и функция которая их использует:
Код

virtual ArrString Send(const ArrOfVar Params) = 0; 

На клиенте я сделал следующее
Код

static void RegTypes()
{
InvRegistry()->RegisterInterface(__interfaceTypeinfo(Service), L"http://serv.labs.org", L"UTF-8");
InvRegistry()->RegisterDefaultSOAPAction(__interfaceTypeinfo(Service), L"");
RemClassRegistry()->RegisterXSInfo(__arrayTypeinfo(ArrOfVar), L"http://local:8070/Service", L"ArrOfVar");
RemClassRegistry()->RegisterXSInfo(__arrayTypeinfo(ArrString), L"http://local:8070/Service", L"ArrString");
}

в H файле 
Код

namespace NService 
{
typedef DynamicArray<Variant>     ArrOfVar;
typedef DynamicArray<String>     ArrOfStr;
_interface INTERFACE_UUID("{6D84F229-6F96-E582-EB62-0A5953769980}") Service : public IInvokable
{
public:
  virtual ArrString Send(const ArrOfVar Params) = 0;
  };
typedef DelphiInterface<Service> _di_Service;
_di_Service GetService();
}
using  namespace NService;

массив заполнил, передел в параметры функции 
Код

_di_Service s = GetService();

    ArrOfVar ArrAnyType;
    ArrAnyType.set_length(6);

    ArrAnyType[0]=(cxFibersNum->Text);
    ArrAnyType[1]=(cbCrosspieceType->Text);
    ArrAnyType[2]=(TheServiceId);
    ArrAnyType[3]=(cxETO->Text);
    ArrAnyType[4]=(cxStand->Text);
    ArrAnyType[5]=(cxSomeShit->Text);

    s->Send(ArrAnyType);

все скомпилировалось но при выполнении вылетает ошибка Unexpected params quantity.
Интерфейс смотрел там точно есть и функция и типы данных, в чем может быть проблема?

Автор: SenkraD 11.12.2009, 19:30
rainebove,  коим образом это связано с сетью?

Что могу сказать, исходя с кода: "У вас в классе массива индексация точно с нуля начинается? -
у делфли принято индексацию с 1 начинать и Builder этому иногда следует этому в своих классах,
а я имею смелость подохревать, что вы пишите на Builder."

P.S. Если пишеш на Builder, то попрори модераторов перенести тему в соотвествующую ветку

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)