admin管理员组文章数量:1565768
“索引超出了数组界限”也有可能确实是因为你选择的二维码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,后续计算自然会报“索引超出了数组界限”异常。
把此文件夹复制到程序中,问题解决,不再报此异常。最后附上Demo源码!
附件:点击下载
转载于:https://wwwblogs/vice/p/7154809.html
版权声明:本文标题:ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法... 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726876980a1088464.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论