首页 > 其他分享 >【记录一下】修正lazarus fr报表控件在龙芯电脑不能使用QRcode的Bug

【记录一下】修正lazarus fr报表控件在龙芯电脑不能使用QRcode的Bug

时间:2023-05-21 16:45:53浏览次数:41  
标签:控件 fr 龙芯 errorLevel codewords dest ERROR do MOD


近日海南朋友使用fr控件时发现不能在报表插入QRCode和PDF417等二维码,经跟踪发现只需将frxBarcodePDF417.pas第1592行

A := TInt(ERROR_LEVEL[errorLevel]);

改为:

A := @(ERROR_LEVEL[errorLevel]);

就可以正常插入QRCode等二维码了,如果你使用过程也遇到同样问题可参考一下。
使用环境:
lazarus 2.3
FPC 3.31
CPU:Loongarch64
OS:统信专业版

procedure TfrxBarcodePDF417.CalculateErrorCorrection( dest : integer);
var
    A : TInt;
    ALength,e,k,t1,t2,t3, LastE : integer;
begin
    if (errorLevel < 0) or ( errorLevel > 8) then
        errorLevel := 0;
    A := @(ERROR_LEVEL[errorLevel]); //2023.05.21 LBZ修正QRCode等不能使用的Bug
    //A := TInt(ERROR_LEVEL[errorLevel]);
    Alength := 2 shl errorLevel;
    for k := 0 to Alength-1 do
        codewords[dest + k] := 0;
    lastE := Alength - 1;
    for k := 0 to lenCodewords-1 do
    begin
        t1 := codewords[k] + codewords[dest];
        for e := 0 to lastE do
        begin
            t2 := (t1 * A[lastE - e]) mod _MOD;
            t3 := _MOD - t2;
            if e = LastE then
                codewords[dest + e] := t3 mod _MOD
            else
                codewords[dest + e] := ((codewords[dest + e + 1]) + t3) mod _MOD;
        end;
    end;
    for k := 0 to Alength- 1 do
        codewords[dest + k] := (_MOD - codewords[dest + k]) mod _MOD;

end;

标签:控件,fr,龙芯,errorLevel,codewords,dest,ERROR,do,MOD
From: https://www.cnblogs.com/qiufeng2014/p/17418753.html

相关文章

  • Android 秒级编译 Freeline
    我们知道Android的编译很慢,尤其是项目大点的时候,那编译速度简直难以忍受,极大的降低了我们的开发效率,之前的文章「Android高效调试神器JRebel」给大家介绍过,但是是付费的,用起来不是那么自由,而今天给大家介绍另外一个强大的工具–Freeline,绝对秒级编译。什么是Freeline?Freelin......
  • python yield yield from
    pythonyield1:可迭代、迭代器、生成器2:如何运行/激活生成器3:生成器的执行状态4:从生成器过渡到协程:yield可迭代、迭代器、生成器fromcollections.abcimportIterable,Iterator,Generatorisinstance(obj,Iterable)#可迭代对象isinstance(obj,Iterator)......
  • Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面
    感觉Android到处都是坑,每个地方都要把人折腾半天。今天来简单说说Android之ActionBar、Tabs、Fragment、ViewPager实现标签页切换并缓存页面关于他们的介绍就不多说了,网上到处都是,只说关键的部分:我在开发的时候遇到几个疑难问题,花费大量时间处理,总结如下:1.关于Fragment内部......
  • No tab content FrameLayout found for id xxxxxxx
     android4.4自己加上的 android-support-v4.jar使用以下布局会报NotabcontentFrameLayoutfoundforidxxxxxxx我老版本的 android-support-v4.jar 差距很大  用FragmentTabHost+FragmentActivity实现了微博的底部Tab,layout布局如下:  1.<?x......
  • From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了
    FromJavaToKotlin,空安全、扩展、函数、Lambda概述(Summarize)• Kotlin是什么?• 可以做什么?• Android官方开发语言从Java变为Kotlin,Java有哪些问题?• Kotlin的优点• Kotlin特性(Features)Kotlin是什么?Kotlin出自于捷克一家软件研发公司 JetB......
  • P5179 Fraction 题解
    题目描述给你四个正整数\(a,\,b,\,c,\,d\),求一个最简分数\(\frac{p}{q}\)满足\(\frac{a}{b}<\frac{p}{q}<\frac{c}{d}\)。若有多组解,输出\(q\)最小的一组,若仍有多组解,输出\(p\)最小的一组。前置知识:Stern-Brocot树首先引入分数逼近。这里的分数逼近是指用用一个......
  • 基于GoFrame框架开发要点
    Go语言对于初学者是有一定的门槛的,在学习完Go语言基础后,就感觉不知道下一步该如何学下去,本文以GoFrame最新框架来讲解一下如何开发一个项目。首先我们要了解一下通过GoFrame框架脚手架自动生成的各个目录和文件的含义,我建议大家能吃透相关概念,比如数据模型、领域对象、业务接口,理......
  • Connections could not be acquired from the underlying database!
    报错内容:五月19,20239:02:42上午org.apache.catalina.core.StandardWrapperValveinvoke严重:在路径为的上下文中,Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常Requestprocessingfailed;nestedexceptionisorg.springframework.transaction.CannotCreat......
  • [learn from chatGPT] [vba] 如何使用 Collection 或 Dictionary 对象来代替数组
    在VBA中,`Collection`和`Dictionary`对象可以用来代替数组。它们的主要优点是可以动态地添加、删除和查找元素,而无需调整数组大小。下面是一个简单的例子:```SubUseCollection()DimmyCollectionAsNewCollection'添加元素到Collection中myCollection.Add......
  • Android Fragment完全解析,关于碎片你所需知道的一切
    我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非常大,手机的界面放在平板上可能会有......