Oh my goodness! It is always something small that wastes hours of time.

On 08/15/2011 08:48 AM, Johnny Rosenberg wrote:
Okej, forget this, I solved it. Immediately after I sent this I found
the problem! All I needed to do to find it out was probably to write
about it somewhere…

I found the problem when I did a search in all modules for my type
”DieStatistics”. I found it in a module called ”Experiment” which is
Swedish for ”Experiments” in this case.

I did some tests in that module a few days ago, before I declared
DiceFreq as an array of DieStatistics, so DiceFreq was declared
globally twice:

Module Experiment:
Global DiceFreq As DieStatistics

Module P:
Private DiceFreq(1) As DieStatistics

After removing the Experiment ones, everything worked as expected.

Phew, what a relief… I thought I was crazy there for a few minutes…!

And I usually don't top post, but in this case I thought it could be
appropriate, since the text below suddenly became very unimportant.

Best regards

Johnny Rosenberg

2011/8/15 Johnny Rosenberg<gurus.knu...@gmail.com>:
I was editing some code I have, actually a game with dice and stuff,
but that doesn't matter, I suppose.

So I ran into a problem, and I copied the troubling part of the code
to a separate document for test driving.
However, the test code runs perfectly, but not within the game of mine!

I ran the game on another computer but another version of
OpenOffice.org (actually the first computer runs LibreOffice 3.3.3),
but the results were exactly the same.

Here's the test code. I have a message box after almost every
statement so I can see what happens. I added some extra comments in
the code.

REM  *****  BASIC  *****

Option Explicit
Option Compatible

Type DieStatistics
        Value As Integer
        Count As Integer
End Type

' The variable DiceFreq, declared below this comment, tells us which
two die values that are most frequent. For example, if the six dice
are 133455,
' DiceFreq will contain:
' DiceFreq(0).Value: 5 (the most common value is 5)
' DiceFreq(0).Count: 2 (2 dice have the value 5)
' DiceFreq(1).Value: 3 (the second most common value is 3 – in this
case there are two of both 3 and five, but higher value has priority)
' DiceFreq(1).Count: 2 (2 dice have the value 3)
' This makes it very easy for us to calculate things later,
calculations that are not present in this short example though.
Private DiceFreq(1) As DieStatistics '

Sub Test0
'       NDice tells us how many there are of each die value. In the above
example, NDice(4)=1, since there are 1 die with the value 4.
        Dim NDice(1 To 6) As Integer, i As Integer

'       Here we set the values of NDice for an example where this is known
to fail, that is what NDice would contain if the dice were 112345
'       NDice(1)=2, NDice(2)=1 and so on.
        For i=2 To 5
        Next i

'       Here's where I calculate the values for DiceFreq by going through
NDice from 6 to 1.
        For i=6 To 1 Step -1
                If NDice(i)>DiceFreq(0).Count Then
                                MsgBox DiceFreq(0).Value&  ": "&  DiceFreq(0).Count&  " 
st."&  Chr(13)&  _
                                DiceFreq(1).Value&  ": "&  DiceFreq(1).Count&  " 
                                MsgBox DiceFreq(0).Value&  ": "&  DiceFreq(0).Count&  " 
st."&  Chr(13)&  _
                                DiceFreq(1).Value&  ": "&  DiceFreq(1).Count&  " 
                ElseIf NDice(i)>DiceFreq(1).Count Then
                                MsgBox DiceFreq(0).Value&  ": "&  DiceFreq(0).Count&  " 
st."&  Chr(13)&  _
                                DiceFreq(1).Value&  ": "&  DiceFreq(1).Count&  " 
        Next i
        MsgBox "Final reults:"&  String(2,Chr(13))&  DiceFreq(0).Value&  ":"
&  DiceFreq(0).Count&  _
         " st."&  Chr(13)&  DiceFreq(1).Value&  ": "&  DiceFreq(1).Count&  " 
End Sub

Now, while this works perfectly as a stand-alone subroutine, it
doesn't work in the game. What happens in the game is that everytime I
change the value of DiceFreq(i).Value or DiceFreq(i).Count, BOTH
instances are changed, for example if I set DiceFreq(0).Value to 5,
DiceFreq(1).Value is also set to 5 and I just can't figure out why!

In the game the corresponding subroutine is called from another
module, but I simulated that too in my test, but still it ONLY fails
in the game.

I can upload my game document (the debug version) somewhere if needed.

What on earth could possibly cause this? I'm just out of ideas!


Kind regards

Johnny Rosenberg

Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info:  http://www.pitonyak.org/oo.php

To unsubscribe send email to dev-unsubscr...@api.openoffice.org
For additional commands send email to sy...@api.openoffice.org
with Subject: help

Reply via email to