<DIV>&nbsp;</DIV>
<DIV>HI!</DIV>
<DIV><BR>I am download omniORB-4.0.7-win32-vc7.zip,<BR>I am using omniORB_4.0.7 on&nbsp; Win2000 (MSVC++7.1) platforms,<BR>and the echo examples work fine .</DIV>
<DIV>Now I use data sequence,but have the problem :</DIV>
<DIV><BR>//----------IDL---------</DIV>
<DIV>struct NetDataItem<BR>{<BR>&nbsp;long id;<BR>&nbsp;string name;<BR>};</DIV>
<DIV>typedef sequence&lt;NetDataItem&gt; DataArray; <BR>typedef sequence&lt;long&gt; DataLongArray;</DIV>
<DIV>interface QDataSeq<BR>{<BR>&nbsp;DataArray QueryDatas();&nbsp;<BR>&nbsp;DataLongArray QueryLongData();&nbsp;<BR>};</DIV>
<DIV><BR>//---------server code--------------</DIV>
<DIV>// return&nbsp; struct data Sequence<BR>DataArray* QDataSeq_i::QueryDatas(){<BR>&nbsp;int cnt =100;<BR>&nbsp;DataArray_var datas = new DataArray((CORBA::Long)cnt);<BR>&nbsp;datas-&gt;length(cnt);<BR>&nbsp;for (int i =0;i&lt; cnt; ++i)<BR>&nbsp;{<BR>&nbsp;&nbsp;datas[i].id = (CORBA::Long)(i+1);<BR>&nbsp;&nbsp;datas[i].name = CORBA::string_dup("aaaa"); // is OK??<BR>&nbsp;}<BR>&nbsp;std::cout &lt;&lt; "OK" &lt;&lt; endl;<BR>&nbsp;return datas._retn();<BR>}</DIV>
<DIV>// return long Sequence<BR>DataArray* QDataSeq_i::QueryLongData(){<BR>&nbsp;int cnt =100;<BR>&nbsp;DataLongArray_var datas = new DataLongArray((CORBA::Long)cnt);<BR>&nbsp;datas-&gt;length(cnt);<BR>&nbsp;for (int i =0;i&lt; cnt; ++i)<BR>&nbsp;{<BR>&nbsp;&nbsp;datas[i] = (CORBA::Long)(i+1);<BR>&nbsp;}<BR>&nbsp;std::cout &lt;&lt; "OK" &lt;&lt; endl;<BR>&nbsp;return datas._retn();<BR>}</DIV>
<DIV><BR>//-----------client code-----------------------</DIV>
<DIV>this arises some exception of free sequence. why?</DIV>
<DIV>//query struct data Sequence , use _var<BR>void queryData(QDataSeq_ptr e)<BR>{<BR>&nbsp;DataArray_var dest = e-&gt;QuearyDatas();<BR>&nbsp;int len = pdest-&gt;length();<BR>&nbsp;std::cerr &lt;&lt; "query sequence size :" &lt;&lt; len &lt;&lt; endl;<BR>&nbsp;//do something<BR>}<BR>/* use delete sequence ptr<BR>void queryData(QDataSeq_ptr e)<BR>{<BR>&nbsp;DataArray* pdest = e-&gt;QuearyDatas();<BR>&nbsp;int len = pdest-&gt;length();<BR>&nbsp;std::cerr &lt;&lt; "query sequence size :" &lt;&lt; len &lt;&lt; endl;</DIV>
<DIV>&nbsp;//pdest-&gt;release();&nbsp; <BR>&nbsp;delete pdest; // arise some exception. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //If this isn't used 'delete' , it have memory leak,but run OK.<BR>}<BR>*/</DIV>
<DIV><BR>//query long Sequence. It is work fine and not have memory leak. <BR>void queryData(QDataSeq_ptr e)<BR>{<BR>&nbsp;DataArray_var dest = e-&gt;QuearyDatas();<BR>&nbsp;int len = pdest-&gt;length();<BR>&nbsp;std::cerr &lt;&lt; "query sequence size :" &lt;&lt; len &lt;&lt; endl;<BR>&nbsp;//do something<BR>}</DIV>
<DIV>====================================<BR>Get a list of NetDataItem and display it, ERROR IN THE CLIENT.<BR>but Get a list of long ,it work fine.<BR>why?</DIV>
<DIV>Help me!&nbsp; <BR>How to fine use sequence of struct in the client and server?</DIV>
<DIV>&nbsp;</DIV>
<DIV>2006-10-16 roger007</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV >&nbsp;</DIV><br><!-- footer --><br><br><br><br><br><div style="border-bottom:1px solid #999"></div><br>

        <font color="black" style="font-size:14.8px">3G 时 代 来 临 了,坚 决 对 传 统 邮 箱 说 不 !</font>
        <br>
         <a href="http://www.126.com/" target="_blank" style="font-size:13px;line-height:160%;color:blue">新 一 代 极 速 3G 邮 箱 闪 亮 登 场 ,280 兆 网 盘 免 费 送 ! 点 击 此 处 注 册
</a>