<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body>
<div>Oooh yes, you are right.</div>
<div><span class="tlid-translation translation"><span>I knew this procedure</span></span>, but I have forgotten it totally.</div>
<div>thanks</div>
<p>Il 06.08.2019 14:32 ML ha scritto:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->On 6/8/19 08:05, <a class="moz-txt-link-abbreviated" href="mailto:vuott@tiscali.it">vuott@tiscali.it</a> wrote:<br />
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%"><!-- meta ignored -->
<div>Hello,</div>
<div>I don’t understand why at the second reading of a Structure array I always get the value of the last element.</div>
<div>
<pre class="moz-quote-pre"><code class="hljs php"><span class="hljs-keyword">Public</span> Struct AAAA   b <span class="hljs-keyword">As</span> Byte   c <span class="hljs-keyword">As</span> Short   i <span class="hljs-keyword">As</span> Integer End Struct Public Sub Main()   Dim a <span class="hljs-keyword">As</span> <span class="hljs-keyword">New</span> AAAA   Dim aa <span class="hljs-keyword">As</span> <span class="hljs-keyword">New</span> AAAA[]   Dim i <span class="hljs-keyword">As</span> Integer     <span class="hljs-keyword">For</span> i = <span class="hljs-number">0</span> To <span class="hljs-number">7</span>     aa.Push(a)     Valorizza(i, aa[i])     <span class="hljs-keyword">Print</span> aa[i].b,      <span class="hljs-string"> ' first</span> <span class="hljs-string">  Next</span> <span class="hljs-string">Print</span> <span class="hljs-string">Print</span> <span class="hljs-string">  For i = 0 To 7</span> <span class="hljs-string">    Print aa[i].b,      '</span> second   Next End Private Procedure Valorizza(c <span class="hljs-keyword">As</span> Integer, s <span class="hljs-keyword">As</span> AAAA)     s.b = <span class="hljs-number">4</span> * c   End</code>
</pre>
</div>
</blockquote>
Looks like all the structs in the array refer (i.e: they're pointers) to the same 'a' struct in the first DIM.<br /> Therefore, when you change the value in ANY element, you end up changing it in all elements just because they're all pointing to the same original 'a'.<br /><br /> Change the first DIM to this:<br />
<pre><code class="hljs php">  Dim a <span class="hljs-keyword">As</span> AAAA </code></pre>
and alter the first FOR as follows:<br />
<pre><code class="hljs php">  <span class="hljs-keyword">For</span> i = <span class="hljs-number">0</span> To <span class="hljs-number">7</span> a = New AAAA 'New line. This makes 'a' point to a new, different structure in memory in each pass     aa.Push(a) 'continue your original code here </code></pre>
That fixes it.<br /><br /> zxMarce.</blockquote>
</body></html>
<br><br/><br/>Con OpenStar hai Giga, SMS e i minuti che vuoi da 4,99€ al mese, per sempre. Cambi gratis quando e come vuoi e in più hai 6 mesi di INFINTY! <a href='http://tisca.li/myopen' target='_blank'>http://tisca.li/myopen</a><br/><br/>