2011/8/23 Johnny Rosenberg <[email protected]>: > 2011/8/23 Johnny Rosenberg <[email protected]>: >> 2011/8/20 Johnny Rosenberg <[email protected]>: >>> 2011/8/19 Niklas Johansson <[email protected]>: >>>> To empty the array use x = Nothing. So before the ReDim-statement do... >>>> >>>> … >>>> x = Nothing >>>> ReDim x(1) As MyType >>>> … >>>> >>>> I think you stumbled upon a bug since your using Option Compatible it >>>> should >>>> have the same behavior as VBA. In VBA both ReDim statements yields an >>>> error. >>>> “ReDim x(1) As MyType” because it has already been dimensioned and ReDim y >>>> As MyType because it is not a dynamic Array. >>> >>> Okay, thanks everyone for your input. It seems like I have >>> misunderstood the concept a little bit. I'll take a closer look at it >>> when I get home after the weekend. >>> >>> J.R. >>> >> >> I am now at home again, so I did some more tests. Here's the current >> example code (I modified the first one a little bit): >> REM ***** BASIC ***** >> >> Option Compatible >> Option Explicit >> >> Type MyType >> a As Integer >> b As Integer >> End Type >> Dim x() As MyType ' Comment 1a: See Comment 2 below. >> Dim x(1) As MyType ' Comment 1b: See Comment 2 below. >> Dim z() As Integer >> >> Sub Main >> Dim y As MyType >> Dim i As Integer >> ReDim x(1) As MyType ' Comment 2: Gives an error if x was declared as >> at Comment 1a, >> ' and the line at Comment 1b is omitted. >> ' However, if both lines (1a and 1b) are >> there, there is no error. >> ReDim z(3) As Integer >> For i=0 To 1 >> x(i).a=i*2 >> x(i).b=1+i*2 >> Next i >> >> For i=0 To 3 >> z(i)=6+i >> Next i >> >> y.a=4 >> y.b=5 >> >> MsgBox x(0).a & x(0).b & x(1).a & x(1).b & y.a & y.b & _ >> z(0) & z(1) & z(2) & z(3) ' Comment 3: Displays 12345678910 >> >> x=Nothing >> ReDim x(1) As MyType >> ReDim z(3) > > Sorry, a type there. Should have been:
Aaaarghhh! I can't type today…! I meant ”typo”, not ”type”… Johnny Rosenberg > ReDim z(3) As Integer > > It didn't matter for this test though. > > > Kind regards > > Johnny Rosenberg > ジョニー・ローゼンバーグ > >> ReDim y As MyType ' Comment 4: This doesn't give an error, but it >> should? >> MsgBox x(0).a & x(0).b & x(1).a & x(1).b & y.a & y.b & _ >> z(0) & z(1) & z(2) & z(3) ' Comment 5: Displays 0000000000 >> End Sub >> ———End of code——— >> >> ”x=Nothing” seems to be the easiest solution or workaround at the >> moment. The suggestion to define x as a dynamic array didn't work with >> MyType. When doing ReDim, see Comment 2 within the code, I got an >> error message about the index, that was out of bounds, an error >> message I didn't get for z(), which I declared as Integer instead of >> MyType. >> It seems like I can ReDim x outside the subroutine but not inside it, >> see comments 1a, 1b and 2. >> >> So, if I declare something as a custom data type above a subroutine or >> function, I can not ReDim it inside a subroutine or function. Why is >> that? Or is it a bug? Because I can do that if it's declared as one of >> the existing data types, such as Integer. >> >> So after all, it seems like the combination of custom data types and >> ReDim doesn't behave in an expected way, does it? So there is maybe a >> bug there to report. >> And, as already pointed out, accepting ReDim for y in my example is >> probably also a bug, right? >> >> >> >> Kind regards >> >> Johnny Rosenberg >> ジョニー・ローゼンバーグ >> > -- 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
