0
头像

单击“首选项”选项卡中的“确定”或“应用”时出现“读取内存文件时出错”

我已经与 Peter Tsai 就这个问题进行了对话(不是通过这个论坛)。请参阅https://support.geneious.com/hc/en-us/requests/29878

简而言之:每当我在工具 -> 首选项的插件选项卡面板中更改“选项”的值时,每当我在该面板中按应用或确定时,我都会收到消息“读取内存文件时出错”。

您的开发团队得出的结论是,上述消息非常无害。

但是,我现在发现 Geneious 发出此消息的后果是读取选项面板上选项值的代码得到错误的值。

更准确地说:对于任何 Geneious 会话,您都可以更改一次值,并且在调用 Options.Option.getValue() 时仍然会获得正确的值。在那之后,它只是不断地给你返回那个特定的值,但是你通常会在之后更新该选项的值。

有一个变通方法:将更改侦听器附加到每个选项,并使该侦听器将新值复制到某种 Memento 对象。更改侦听器确实由用户更新触发。不过还是挺费劲的。

信息管理

3 条评论

0
头像

事实上,即使这样也行不通。我面临着一个邪恶的选择,要么总是在 Preferences 面板中看到最后一个更新的值,但随后无法使用 Option.getValue() 检索正确的值。或者使用 Option.getValue() 获取正确的值,但随后在 Preferences 选项卡中看到该值顽固地返回到其初始值。这是与 API 的一场斗争。

信息管理 0 票
评论动作 永久链接
0
头像

我是 Peter 就您的支持请求咨询过的开发人员。

完全清楚,这是在您编写的 PluginPreferences 子类中发生的,而不是在运行 DocumentOperation 子类(或 SequenceAnnotationGenerator 等)的选项对话框中发生的?

我怀疑“无法确定最大内存......读取内存文件时出错”警告实际上并不是您观察到的症状的原因,但它可能是相关的(我不确定如何,但这两个症状都是很奇怪,所以看起来很有可能)。该特定消息已记录,但无论如何都保存了面板首选项的方法。 

但是,我很难说是什么原因导致您的偏好无法应用。您是否也收到了“[插件标签标签] 中的错误”这样的消息? 

如果您可以提出新的支持请求(如果您这样做,请提及我)会很有帮助。我想要构建您的插件(作为 .gplugin 文件),以便我可以安装它并查看它在应用首选项时提前返回的确切位置。

杰西卡 0 票
评论动作 永久链接
0
头像

你好杰西卡,

 

抱歉,在另一个项目上呆了几天。好的,我将创建一个新的支持请求。但是,是的,在工具 -> 首选项页面的选项卡中执行任何操作时都会发生这种情况。PluginPreference 子类没有做太多事情,但 creatOptions 方法返回一个 Options 子类,这可能是罪魁祸首。这是它的 github URL:https://github.com/naturalis/sd_java__geneious_plugin/blob/v2_master/importers/src/main/java/nl/naturalis/geneious/NaturalisOptions.java

信息管理 0 票
评论动作 永久链接