[MWy] omniORB, server a BAD_PARAM

Petr Tuma petr.tuma at dsrg.mff.cuni.cz
Wed Apr 9 13:12:14 CEST 2008


Zdravim,

jeste k tomu, co vam psal kolega Babka ...

> 1) Najít metodu length(). Všude na internetu se o ní píše, ale v
> omniORB nic takového není. Použití length() skončí chybou překladu
> „...not a member...“. Pokud to chápu správně, číselný parametr
> konstruktoru sice alokuje předem paměť, ale nestanovuje velikost
> sekvence. Ta zůstane nulová. Jakýkoliv index (včetně 0) je pak
> nejspíš chybný a může vyvolat BAD_PARAM.

Ano, ta uvaha je velmi spravna, pristup na obsah sekvence bez nastaveni 
length () je spatne (nemusi nutne hodit vyjimku, ale muze). Urcite 
musite delku nastavit (seq->length ()).

Mozna o neco pohodlnejsi, pokud se nechcete trapit s presnym vyznamem 
toho out typu, by mohlo byt neco ve stylu:

octet_sequence_t_var vMySequence = new octet_sequence_t (out_size);
vMySequence->length (out_size);
for (...) { ... }
status = vMySequence._retn ();

Petr Tuma




More information about the NSWI080 mailing list