尝试使用 OfficeDatabaseDocument UNO 服务加载()时如何修复:"Not Enough Stack Memory"

How to fix :"Not Enough Stack Memory" when trying to load() with OfficeDatabaseDocument UNO service

我试着熟悉 Macro 和 UNO API 在 LibreOffice Base 上的用法,我试着用 UNO OfficeDatabaseDocument(这里的文档:https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sdb_1_1OfficeDatabaseDocument.html#a3d0b1f053d53f5b196e4c19e55a519ae)打开我的 .odb 文件来玩与 UNO 一起学习使用它们。

Function MyClubOfficeDatabaseDocument()
    Dim MyClubURL(0) As New com.sun.star.beans.PropertyValue
    MyClubURL(0).Name = "Chemin d'accès vers la base de donnée MyClub"
    MyClubURL(0).Value = "/Users/faisalsalhi/Desktop/MyClub/MyClub.odb"

    MyClubOfficeDatabaseDocument = CreateUnoService("com.sun.star.sdb.OfficeDatabaseDocument")
    MyClubOfficeDatabaseDocument.load(MyClubURL)
End Function

我收到 运行 时间错误,说我没有足够的堆栈内存来执行此操作。

您 运行 堆栈内存不足,因为您设置了无限递归。也就是说,您的函数 MyClubOfficeDatabaseDocument 在自身内部被调用,然后它会一次又一次地一次又一次地调用自己,ad infinitum.

解决这个问题的唯一方法是消除无限递归。

您应该能够通过简单地更改您的函数名称或变量名称来修复它。例如,您可以将函数名称更改为 LoadMyClubOfficeDatabaseDocument.