Johnny, On Thu, 2011-08-18 at 21:46 +0200, Johnny Rosenberg wrote:
> 2011/8/18 planas <[email protected]>: > > Johnny, > > > > On Thu, 2011-08-18 at 18:11 +0200, Johnny Rosenberg wrote: > > > >> I was, in a reply to another question, told that my questions were way > >> too basic for the [email protected] list, so I'll give it a try > >> here instead. > >> > >> I wrote some example code: > >> > >> REM ***** BASIC ***** > >> > >> Option Compatible > >> Option Explicit > >> > >> Type MyType > >> a As Integer > >> b As Integer > >> End Type > >> Dim x(1) As MyType > >> > >> Sub Main > >> Dim y As MyType > >> Dim i As Integer > >> For i=0 To 1 > >> x(i).a=1+i*2 > >> x(i).b=2+i*2 > >> Next i > >> y.a=5 > >> y.b=6 > >> > >> MsgBox x(0).a & x(0).b & x(1).a & x(1).b & y.a & y.b ' Displays > >> 123456 > >> > >> ReDim x(1) As MyType > >> ReDim y As MyType > >> MsgBox x(0).a & x(0).b & x(1).a & x(1).b & y.a & y.b ' Displays > >> 123400 > >> End Sub > >> > >> So if we have an array as MyType (or any other custom type, I > >> suppose), ReDim will not reset it. > >> Is this the expected behaviour or should I write a bug report? > >> If it is expected, why? > >> > >> I guess it's unnecessary to mention that I am a complete beginner in > >> everything that has anything to do with computers; we guitar players > >> are quite stupid, you know. > >> > >> Oh, and in case it matters: > >> LibreOffice 3.3.3, Ubuntu 10.10. > >> LibreOffice installed with the debs at http://www.libreoffice.org/. > >> > >> Best regards > >> > >> Johnny ”The Moron” Rosenberg > >> ジョニー・ローゼンバーグ > >> > > > > I had to look up ReDim behavior myself, so do not to hard on yourself. > > ReDim is used to re-dimension an array. It is particular useful when you > > are likely to encounter an variable length array (different length each > > time the code executes). Normally when the array is re-dimensioned the > > previous values are destroyed because you normally want to enter new > > values into the array. Some flavors of basic allow to use ReDim Preserve > > to preserve the array's original value - you may want to try this to see > > if works. > > No, Preserve does the opposite, it preserves all the values. I want an > EMPTY array without having to empty them with a time consuming For > loop, so I though ReDim should do the job very quickly. It does in > most cases, but as my example shows, not always… > > As you can see in my example, after ReDim y is reset to 0 (y.a=0, > y.b=0) but x is not (x(0).a=1, for example). The difference between x > and y is that x is an array and x is declared above the subroutine > (this was a couple of days ago, so I don't remember if I tested > absolutely everything, but as far as I remember, my conclusion was > that an array of a custom type isn't reset to 0 after ReDim, I am not > sure if there was a difference if it was defined in a subroutine or > outside. > > So my question still is: Is this what I should expect or is it a bug? > If it is a bug I will need to write a bug report, won't I? But I don't > want to do that if this is the expected behaviour, because it only > annoys people… > It looks like a bug to me, go ahead and post a bug report, thanks > Kind regards > > Johnny Rosenberg > ジョニー・ローゼンバーグ > > > > > A common use is > > Dim MyArray() as type > > > > ReDim MyArry(1 to x), x will be supplied by the procedure. > > > > Often there are little subtleties that can drive you crazy when program, > > the compiler/interpreter is very fussy that you follow all the grammar > > and syntax rules for the langauge. > > -- > > Jay Lozier > > [email protected] > > > > -- > > For unsubscribe instructions e-mail to: [email protected] > > Problems? > > http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ > > Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette > > List archive: http://listarchives.libreoffice.org/global/users/ > > All messages sent to this list will be publicly archived and cannot be > > deleted > > > > -- > For unsubscribe instructions e-mail to: [email protected] > Problems? > http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ > Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette > List archive: http://listarchives.libreoffice.org/global/users/ > All messages sent to this list will be publicly archived and cannot be deleted -- Jay Lozier [email protected] -- For unsubscribe instructions e-mail to: [email protected] Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette List archive: http://listarchives.libreoffice.org/global/users/ All messages sent to this list will be publicly archived and cannot be deleted
