Struct libreofficebasic忽略“;一些”;属于我的类型…结束类型定义

Struct libreofficebasic忽略“;一些”;属于我的类型…结束类型定义,struct,libreoffice-basic,Struct,Libreoffice Basic,我使用的是LibreOffice版本:4.4.3.2构建ID:40m0(构建:2)语言环境:en_AU 我有一个基本模块 在本模块的顶部,在我有任何子模块或函数之前 Type InitHeadings MySort_By As Integer MyCharacter As Integer MyInitiative As Integer MyRolled As Integer MyTotal As Integer End Type ... Global

我使用的是LibreOffice版本:4.4.3.2构建ID:40m0(构建:2)语言环境:en_AU

我有一个基本模块

在本模块的顶部,在我有任何子模块或函数之前

Type InitHeadings
    MySort_By As Integer
    MyCharacter As Integer
    MyInitiative As Integer
    MyRolled As Integer
    MyTotal As Integer
End Type

...

Global InitiativeColumn As New InitHeadings
但是当我运行一个子系统时,设置一个断点并“监视”InitiativeColumn对象,只显示前两个字段

下面是文档调用的与此结构相关的其余代码。我不在其他地方引用它。有人能告诉我为什么前两个有效,而其余的不行吗?我在这段代码中还有另外两个结构,它们都忽略了最后三个字段。这是虫子吗

Sub Main
'Initialise Doc and Sheet Objects

Dim Doc As Object

Doc = ThisComponent
StatsSheet = Doc.Sheets.getByName("Stats")
InitiativeSheet = Doc.Sheets.getByName("Initiative")
CombatSheet = Doc.Sheets.getByName("Combat")


'LOAD HEADING NAMES
'Initiative Sheet
    For Column = 0 to 25 'Columns A to Z
        MyHeadingName = InitiativeSheet.getCellByPosition(Column,0).String
        Select Case MyHeadingName
        Case "Sort By"
            InitiativeColumn.MySort_By = Column
        Case "Character"
            InitiativeColumn.MyCharacter = Column
        Case "Initiative"
            InitiativeColumn.MyInitiative = Column
        Case "Rolled"
            InitiativeColumn.MyRolled = Column
        Case "Total"
            InitiativeColumn.MyTotal = Column
        End Select
    Next Column

End Sub


Sub MyInitiativeButton

'Iterate over a range of cells:
For Row = 1 To 25 'Rows 2 to 26
    'Column 3 is column D the "Rolled" column
    InitiativeSheet.getCellByPosition(InitiativeColumn.MyRolled,Row).VALUE = Roledice(1,20,0)
Next Row

End Sub

它看起来像一个bug,而且似乎已经被报告过了。当我在更新版本(LO5.1.0.3)中测试它时,问题没有出现

这只是调试器窗口的一个问题。这些值仍然存在:

子测试结构
InitiativeColumn.MySort_By=5
InitiativeColumn.MyCharacter=5
InitiativeColumn.MyTotal=5
InitiativeColumn.DoesntExist=5
端接头
此代码工作正常,直到行
InitiativeColumn.DoesntExist=5
,然后崩溃

现在,您在评论中提到的
Global
问题确实是个问题。考虑到标准编程建议,我认为考虑备选方案是明智的。


您是否可以使用返回
InitiativeColumn
,而不是子例程?如果没有,那么按照您的建议分配变量似乎是一个可行的解决方法。就我个人而言,对于LO宏,我更喜欢Python或Java,因为它们都有类。

这看起来像一个bug,而且似乎已经被报告过了。当我在更新版本(LO5.1.0.3)中测试它时,问题没有出现

这只是调试器窗口的一个问题。这些值仍然存在:

子测试结构
InitiativeColumn.MySort_By=5
InitiativeColumn.MyCharacter=5
InitiativeColumn.MyTotal=5
InitiativeColumn.DoesntExist=5
端接头
此代码工作正常,直到行
InitiativeColumn.DoesntExist=5
,然后崩溃

现在,您在评论中提到的
Global
问题确实是个问题。考虑到标准编程建议,我认为考虑备选方案是明智的。


您是否可以使用返回
InitiativeColumn
,而不是子例程?如果没有,那么按照您的建议分配变量似乎是一个可行的解决方法。就个人而言,对于LO宏,我更喜欢Python或Java,因为它们有类。

我不知道为什么这个问题仍然存在,但我确实找到了解决办法:如果我添加三个额外的字段
Sacrifice1作为整数
Sacrifice2作为整数
将3牺牲为整数
到每个结构这就解决了删除最后三个问题。然而,
InitiativeColumn
仍然不是全局的,尽管将
global InitiativeColumn作为新的initHeaders
声明。我发现,如果我声明了一个单独的全局变量
GlobalInitiativeColumn
,并将
InitiativeColumn
分配给它:
GlobalInitiativeColumn=InitiativeColumn
,那么GlobalInitiativeColumn是全局的,并且有效。我不知道为什么这个问题仍然存在,但我确实找到了一个解决方法:如果我添加三个每个结构的附加字段
Sacrifice1为整数
Sacrifice2为整数
Sacrifice3为整数
,这解决了删除最后三个问题。然而,
InitiativeColumn
仍然不是全局的,尽管将
global InitiativeColumn作为新的initHeaders
声明。我发现,如果我声明了一个单独的全局变量
GlobalInitiativeColumn
,并将
InitiativeColumn
分配给它:
GlobalInitiativeColumn=InitiativeColumn
,那么GlobalInitiativeColumn是全局的,并且可以工作。