今天遇到这个软件又闪退了DictTangov2.2.5.6

今天从百度网盘下了一大堆词典正在下有些下好了有些正在下,我就用DictTango] v2.2.5.6版本想把下载好的通过添加词典的当时加进去看看效果咋样,加进去以后,我试了搜索,有些下载的没加进来,扫描了好几次才把我看到的那个下载完成的扫描进去,搜索了几个词软件就有点闪退重新进几次还是这样,删掉软件全部数据,重进没弹出读取全部文件的那个弹窗,,扫描加入词典搜索还是闪退,,删掉软件重装弹出授权那个窗口了,确认后扫描,搜索还是闪退,是不是百度网盘没下载完成的对软件有冲突还是咋样的情况
log_2024-05-02.txt (310.0 KB)

辞典文件没下完整也是要崩溃的,其它的崩溃暂时还没碰到过。

词典文件没有下完就添加查词,会有一定的机率崩溃。举个例子,词典mdx的原始大小是500M, 然后你下了10M就扫描添加了。这个时候添加词典是不会崩溃的,因为词典头的数据已经完整了。然后你查一个词,如果这个词的内容是在原始文件中10M之后的字节,这个时候DictTango就可能会崩溃,因为这个地址根本不存在。

百度这方面也做得不够完善,在文件没有下载完之前,不应该就直接保留原文件名的,比如文件叫ABC.mdx, 下载完成之前应该先用一个临时文件名比如temp123998343, 然后下载完之后才把临时文件改成原文件名比较合理,也避免未完成文件被扫描到的风险。

有其他的解决办法不?我看无限词典这方面避免了

我暂时不打算修复这个,因为这是用户要注意的问题,不要一扫描就全部添加,自己要注意看一下。

百度没下载完的文件名格式是 xxx.baiduyun.p.downloading,考虑下词典本身的原因。

像这样的.mdx.netdisk.p.downloading
如果软件可以只识别最后一个后缀的.mdx或者.mdd文件,中间有.mdx或者.mdd不识别就好了

从你的日志来看,文件名是完整的,应该是已下载完成的状态(如果百度网盘没下载完的文件是不会以.mdd结尾的话),但格式有误。DictTango也只会扫描以.mdx结尾的文件.

[2024-05-02 22:13:47]:Error Message:American Heritage English-Chinese Dictionary.mdd:American Heritage English-Chinese Dictionary.mdd:Unrecognized mdict format
[2024-05-02 22:13:47]:American Heritage English-Chinese Dictionary.mdd:American Heritage English-Chinese Dictionary.mdd:Unrecognized mdict format
[2024-05-02 22:13:47]:cn.jimex.libdict.impl.mdict.base.b.o(Unknown Source:943)
[2024-05-02 22:13:47]:N.c.(Unknown Source:3)
[2024-05-02 22:13:47]:N.b.s(Unknown Source:31)
[2024-05-02 22:13:47]:N.b.(Unknown Source:224)
[2024-05-02 22:13:47]:cn.jimex.dict.dicts.wrappers.MDictWrapper$dictInstance$2.invoke(SourceFile:2)
[2024-05-02 22:13:47]:cn.jimex.dict.dicts.wrappers.MDictWrapper$dictInstance$2.invoke(SourceFile:1)
[2024-05-02 22:13:47]:kotlin.SynchronizedLazyImpl.getValue(Unknown Source:20)
[2024-05-02 22:13:47]:cn.jimex.dict.dicts.wrappers.f.x(Unknown Source:2)
[2024-05-02 22:13:47]:cn.jimex.dict.dicts.wrappers.f.f(Unknown Source:6)
[2024-05-02 22:13:47]:cn.jimex.dict.dicts.search.tasks.a.run(Unknown Source:134)

这是最新的日志,大部分都下载完了,就剩两个了
log_2024-05-03.txt (136.4 KB)

log_2024-05-03.txt (335.3 KB)

换成1.6.9.2暂时没出现闪退现象。

这种只能是用排除法找出哪个词典引发闪退,然后把词典mdx发上来的测试了。还有一个分组里的词典最好不要超过50本。

我排除法测试下这个词典可以让软件闪退

通过百度网盘分享的文件:古汉语常用字多用…
链接:百度网盘 请输入提取码
提取码:et3p
复制这段内容打开「百度网盘APP 即可获取」

老问题了,这是mdxbuilder4.0打包的v3版本的mdx,DictTango可以添加但是读取时会闪退。

MDict v3 Format

MdxBuilder 4.x creates v3 format. The major changes are

1 Like

多谢,终于知道答案了

感觉DictTango还是阻止读取v3和v1(包括1.2,无法显示某些条目)的mdx比较好,鼓励大家重打包成v2的,其他版本都容易出毛病。

是的,mdx2.0暂时还是兼容性比较好的版本, 以上的日志其实也是揭示了mdict的格式不能识别了,只是有时候要真的加载一下词典才知道。

但V3的词典应该不能添加才对,我先测试一下看。

不晓得是不是mdx3.0的格式后来有变化,之前在验证alder32的时候已经失败了,刚刚测试了一下,居然通过了,导致DictTango没有成功阻拦,等一下会发布一个版本修正这个问题