码迷,mamicode.com
首页 > 编程语言 > 详细

ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

时间:2017-07-12 13:46:37      阅读:542      评论:0      收藏:0      [点我收藏+]

标签:log   超出   网上   9.png   height   理解   images   格式   没有   

“索引超出了数组界限”也有可能确实是因为你选择的二维码Version对应的容量不足以存储你所放的内容,如果你确定使用的版本容量二维码能存储你的内容,但还是报错,那么再考虑此解决方法

这两天忙着做一个客户标签打印程序,因为二维码里面存在控制符,使用ZPL指令存在一些问题,因此决定使用生成二维码图片然后转换成ZPL格式图片来打印。途中找了很多类库,很多都无法自定义QR的version而放弃,转而找到ThoughtWorks.QRCode.dll,效果很满意,但是测试的时候发现经常会提示“索引超出了数组界限”异常,开始以为是内容太多的原因。测试多种version都不凑效,我使用的是version=10,而该版本最高可容纳213个字节,实际内容却只有100多个字节。然后网上各种找答案,要么说设置为0(0是QR自动大小)这样我使用该类库就没有意义了,而且使用此方法也测试过,依然报错。

技术分享

然后我开始找ThoughtWorks.QRCode的源码,使用源码一行一行调试,结果发现使用源码自带的demo程序,设置与我程序一样的version,放一样的内容,竟然没有报错,此时我肯定了不是因为二维码容量导致的。

接着我开始两个程序同步调试,一行一行观察两个程序运行时源码QRCodeEncoder.cs中每个数值是否相同(里面计算太复杂了,整整调试了半个多小时),最后在我的程序在源码第448行处发现报了异常,源码demo却没有。查看代码,此处在读某个文件,

技术分享

然后发现在源码demo程序生成文件夹中有这么一个文件夹(下图),按448行的理解,此文件夹中应该存储的是QR对应的Version的数据文件,用于计算二维码容量,而我的程序没有此文件夹计算结果为0,后续计算自然会报“索引超出了数组界限”异常。

把此文件夹复制到程序中,问题解决,不再报此异常。

技术分享

 

数据文件下次再上传

 

ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

标签:log   超出   网上   9.png   height   理解   images   格式   没有   

原文地址:http://www.cnblogs.com/vice/p/7154809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!