# MDX开源实现无法读取部份图片的问题

**URL:** <https://forum.freemdict.com/t/topic/1329>\
**Category:** 技术交流与词典编修\
**Created:** [2020 年4 月 4 日 05:52 UTC](https://forum.freemdict.com/t/topic/1329 "2020-04-04T05:52:16Z")\
**Posts on this page:** 1\
**Showing post:** 44

<div class="post-metadata">

作者： ![12101111](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/1/3bc359/32.png) [@12101111](https://forum.freemdict.com/u/12101111)\
发布日期： [2020 年9 月 4 日 17:31 UTC](https://forum.freemdict.com/t/topic/1329/44 "2020-09-04T17:31:21Z")

</div>

这个代码写的并不对.不应该取最小值,而是直接取shadowEndPos.  
621行goldendict的代码是`RecordIndex.endPos`和`i->first`比,  
这里的`RecordIndex.endPos`是这个record块压缩后的结束位置相对于所有压缩后的record块起始位置的偏移(523行).  
这里的i类型是`pair<qint64, QString>`,`i->first`也就是607行的`headWordId`,是解压后的记录数据的相对于所有未压缩数据的起始偏移量,显然一个是压缩后的偏移量,一个是没有压缩的偏移量,直接比是没有意义的.  
而`RecordIndex.shadowEndPos`是这个块解压后相对于所有未压缩数据的结束偏移量,显然应该只用这个比.  
在`mdictparser.hh`中重载的`RecordIndex`和`qint64`比较== \< \>的操作符也表面应该用`shadow*Pos`和headWordId比较.  
621行的目的就是如果这个词条的起始偏移大于块的结束偏移,那么就在块的列表中找下一个块的索引(idx),这里的偏移都是解压后的偏移.  
我实现的mdx库[GitHub - 12101111/mdict\_rs: Rust crates to read and use Octopus MDict Dictionary.](https://github.com/12101111/mdict_rs) 和最早的readmdict.py都没有这个问题.这个问题只是goldendict特有的.

---

_[View the full topic](https://forum.freemdict.com/t/topic/1329)._
