Git Product home page Git Product logo

cnvcl's Introduction

CnPack VCL Components

You can install Delphinus package manager and install CnPack VCL Components as a package there. (Delphinus-Support)

Important!

If you don't have Delphi Starter Edition please open Source\Common\CnPack.inc and then:

  • comment line {$DEFINE PERSONAL_EDITION}
  • uncomment {$DEFINE ENTERPRISE_EDITION}
  • rebuild both packages

About CnPack Team

CnPack Team are Made up of Many Chinese Programmers and Delphi / C++ Builder Fans on Internet. Our products include CnPack IDE Wizards, CnPack VCL Components and CVSTracNT. etc. CnPack becomes Embarcadero Technology Partner in 2009.

Related Links

CnPack组件包

1. 许可协议

CnPack 开发包以开放源码 (Open Source) 的形式发布,遵守 CnPack 的许可协议,受 CnPack 许可协议的保护。

License 文件中有该协议的详细描述,具体内容可参考协议文件。

请访问 CnPack 开发网站,以获得最新的更新消息:

https://www.cnpack.org

2. 测试包内容

该代码包仅用于开发组内部测试,并未正式发布,不推荐将其直接用于成品软件中,如果您在使用中发现任何问题请与 CnPack 开发组联系:

https://www.cnpack.org
mailto:[email protected]

代码包中包含以下几个目录:
* Doc 开发包文档目录,里面包含了所有 CnPack 设计开发文档以及各种开发规范文档。
* Packages 安装包目录,包含 Delphi 下的包安装文件。
* Examples 演示程序目录,包含开发人员为代码编写的演示程序和源码。
* Source 开发包源代码目录,所有的 CnPack 源码放于该目录下。其中,Crypto 目录中实现了较为完整的纯 Pascal 的密码学算法库,包括常见的杂凑函数、对称加密、RSA、椭圆曲线等,并支持国家商用密码算法 SM2/SM3/SM4/SM9 等。

3. 安装使用

开发包支持 Delphi 5/6/7/2005/2006/2007/2009/2010/XE/XE2/XE3/XE4/XE5/XE6/XE7/XE8/10 Seattle/10.1 Berlin/10.2 Tokyo/10.3 Rio/10.4 Sydney/11 Alexandria/12 Athens 和 C++Builder 5/6。 用户需要在 IDE 中打开 Packages 目录下的包文件(注意版本号),再在包文件窗口中进行编译安装。其中带 dcl 前缀的为设计期包,无此前缀的为运行期包。注意应该先编译运行期包,再安装设计期包。

点击 Delphi 的 Tools 菜单下的 Environment Options,进入设置对话框,点击 Library 页面中的 Library Path 项右边的按钮,将开发包 Source目录下各个子目录分别加入到搜索路径中。

如需要其他语言种类的组件包,可在 Source\Lang 目录下对应语言 ID 的目录中将此语种的字符串常量定义文件和 dfm 文件覆盖 Source 各个目录下的同名文件再重新编译,或运行 Source 目录中的 ToENU.bat 或对应语种的批处理文件进行自动覆盖即可。

注意

如果您用的不是 Delphi 初学者版本 请打开 Source\Common\CnPack.inc 文件:

  • 注释掉 {$DEFINE PERSONAL_EDITION}
  • 不注释 {$DEFINE ENTERPRISE_EDITION}
  • 重新编译运行期以及设计期包

注:该代码包仅用于开发组内部测试,并未正式发布,不推荐将其直接用于成品软件中。

cnvcl's People

Contributors

cnpack avatar cnzjy avatar codegame avatar havrlisan avatar pawe1 avatar rarnu avatar shanzhashu avatar shenloqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnvcl's Issues

CnRandom单元的StopRandom在 Windows x64 程序退出时会触发异常

只要引用了 CnRandom 单元,什么操作都不用做,启动程序,然后直接退出就会触发异常,100%出现

随便新建一个 VCL 或者 Console 程序,目标平台选择 Windows 64-bit,然后uses CnRandom,然后运行程序,然后关闭程序,异常就触发了

CnRSA签名后无法验签

1、cnrsa接口不是太方便签名(还有中文问题,base64),稍微有些不那么亲民^_^
2、签名后内内容在网上《在线RSA加密解密》类验签网站上无法验签,会提示异常,公钥请保留-------BEGIN PRIVATE KEY--------------及---------END PRIVATE KEY----------

Lazarus 无法安装

1.CnNative.pas asm 汇编报错,发现没加结尾分号,补上好了
2.CnLockFree.pas CnAtomicCompareExchange 函数体无法编译通过,我找到另外个函数替换编译过了
//Result := Pointer(InterlockedCompareExchange(LongInt(Target), LongInt(NewValue), LongInt(Comperand)));
Result := InterlockedCompareExchangePointer(Target, NewValue, Comperand);
3.CnZUC.pas ZUCEEA3函数体,CnZUC.pas(354,7) Error: Internal error 200306031 不知道如何修改

使用 FPC 编译目标为 Linux-ARM64 的程序发现 CnDES 单元一个非常奇怪的问题

编译器是最新的 FPC 3.3.1,编译时报的错误如图
image

估计是编译器的bug,但是可以通过调整部分代码避免该问题

我发现只要将
procedure Encry(InData, ASubKey: array of Byte; var OutData: array of Byte);
修改为
procedure Encry(const InData, ASubKey: array of Byte; var OutData: array of Byte);

这个问题就不会出现了

建议将类似的参数定义都加上 const 定义,毕竟 const 定义的话,该参数只会传指针,不会做内存拷贝,效率也会高一些

请教:SM4使用java中的byte数组加密结果不一致

java的key: byte[] keyBytes={17,34,79,88,-120,16,64,56,40,37,121,81,-53,-35,85,102}
加密模式:ECB
填充模式:PKCS7
请教怎么使用cnvcl的SM4模块加密呢
使用如下代码加密的结果与java不一致:
--CNVCL加密代码
const
TmpKeytmp: array[0..15] of Byte =
(17, 34, 79, 88, 255 - 120, 16, 64, 56, 40,
37, 121, 81, 255 - 53, 255 - 35, 85, 102);
procedure TFormCrypt.btnSm4Click(Sender: TObject)
function ArraytoTbytes(bs: array of byte): Tbytes;
begin
setlength(Result, Length(bs));
Move(bs[0], Result[0], Length(bs));
end;
var
Output: AnsiString;
Len: Integer;
TmpSm4Iv: array[0..15] of Byte;
IvStr: AnsiString;
s: ansistring;
m, n: string;
KeyBytes, ResBytes, DataBytes: TBytes;
begin
Len := Length(AnsiString(MMSm4.Text));
if Len < 16 then
Len := 16
else
Len := (((Len - 1) div 16) + 1) * 16;
SetLength(Output, Len);
ZeroMemory(@(Output[1]), Len);
KeyBytes := ArraytoTbytes(TmpKeytmp);//TEncoding.Default.GetBytes(MMKey.Text);
DataBytes := TEncoding.Default.GetBytes(MMSm4.Text);
BytesAddPKCS7Padding(DataBytes, SM4_BLOCKSIZE);
ResBytes := SM4EncryptEcbBytes(KeyBytes, DataBytes);
MMCode.Text := BytesToHex(ResBytes);
end;

About CnCommon

CnCommon.pas
function CnUtf8ToAnsi(const Text: AnsiString): AnsiString;
Need to be changed to
function CnUtf8ToAnsi(const Text: UTF8String): AnsiString;

In Delphi 10.3
CnCustBuild.dpr can not display the wizard name and the comments

CnTwain Memory Leak

Hi, I found memory leaks in CnTwain.pas.

In methods NativeTransfer, MemoryTransfer and FileTransfer, hbm_acq is not freed after use and causes fast growing memory leak.

I made changed in this places:
NativeTransfer:

...
      TWRC_XFERDONE:
        begin
          hbm_acq := hBitMap;
          twRC2 := lpDSM_Entry(@FappID, @FdsID, DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, @twPendingXfer);
          if twRC2 <> TWRC_SUCCESS then
            DoTwMessage('DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER', False);
          if twPendingXfer.Count = 0 then
            if (hbm_acq <> 0) and (GlobalLock(hbm_acq) <> nil) then
            begin
              Terminate(True);
              GlobalUnlock(hbm_acq);
            end;
          if hbm_acq > VALID_HANDLE then begin
            DoXferDone(hbm_acq);
            GlobalFree(hbm_acq);
          end else
            DoXferDone(0);
...

MemoryTransfer:

...
                TWRC_XFERDONE:
                  begin
                    GlobalUnlock(hbm_acq);
                    FlipBitMap(FHandle, hbm_acq, info.PixelType);
                    twRC2 := lpDSM_Entry(@FappID, @FdsID, DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, @twPendingXfer);
                    if twRC2 <> TWRC_SUCCESS then
                      DoTwMessage('DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER', False);
                    if twPendingXfer.Count = 0 then
                      Terminate(True);
                    DoXferDone(hbm_acq);
                    GlobalFree(hbm_acq);
                  end;
...

FileTransfer:

...
              hbm_acq := GlobalAlloc(GHND, header.bfSize);
              if hbm_acq <> 0 then
              begin
                ptr := GlobalLock(hbm_acq);
               //for count:=(header.bfSize-sizeof(BITMAPFILEHEADER)) downto count; count-=num, ptr+=num)
                count := header.bfSize - sizeof(BITMAPFILEHEADER);
                while count > 0 do
                begin
                  if count < num then
                    num := count;
                  _lread(hF, ptr, num);
                  Dec(count, num);
                  Inc(ptr, num);
                end;
                GlobalUnlock(hbm_acq);
              end;
              GlobalFree(hbm_acq);
              _lclose(hF);
...

TCnAAFadeText random EOutOfResources Exception

I'm having random AV when using the TCnAAFadeText component.
Here is the stack trace:

exception class : EOutOfResources
exception message : The parameter is incorrect.

main thread ($dc8c):
005ac0b7 +077 MService.exe Vcl.Graphics GDIError
005ac0f3 +007 MService.exe Vcl.Graphics GDICheck
005b161f +0a7 MService.exe Vcl.Graphics CopyBitmap
005b20cf +063 MService.exe Vcl.Graphics TBitmap.CopyImage
005b428b +04b MService.exe Vcl.Graphics TBitmap.SetSize
005b3acf +00b MService.exe Vcl.Graphics TBitmap.SetHeight
00d51d8c +0bc MService.exe CnAAFont 1356 +10 TCnAAMask.DrawMaskEx
00d523ab +033 MService.exe CnAAFont 1462 +1 TCnAAMask.DrawMask
00d54ef6 +116 MService.exe CnAAFont 2521 +31 TCnAAFontEx.TextOutput
00d5a18a +29e MService.exe CnAACtrls 2296 +40 TCnAAFadeText.DrawFadeBmp
00d5a5b0 +05c MService.exe CnAACtrls 2390 +7 TCnAAFadeText.PaintCanvas
00d58373 +06f MService.exe CnAAFont 3994 +14 TCnAAGraphicControl.Paint
00d5a79b +02b MService.exe CnAACtrls 2436 +4 TCnAAFadeText.SetFadeProgress
00d5a547 +0db MService.exe CnAACtrls 2378 +9 TCnAAFadeText.OnFadeTimer
0066057b +00f MService.exe Vcl.ExtCtrls TTimer.Timer
0066045b +02b MService.exe Vcl.ExtCtrls TTimer.WndProc
005490d0 +014 MService.exe System.Classes StdWndProc

[Code Formatter] inline var with anonymous method

procedure foo();
begin
  while True do
  begin
    var List := Faa(Licence,
      function(Item: TData): TResult
      begin
        Result := crAdd;
      end);
  end;
end;

after

procedure foo();
begin
  while True do
  begin
    var List := Faa(Licence,
  function(Item: TData): TResult
  begin
    Result := crAdd;
  end);
  end;
end;

when you remove var formatting is ok

项目里的介绍全改成中文描述,中文优先。。。

项目里的介绍全改成中文描述,中文优先。。。
明明大家都是**人,**人开发的控件包,还要打上英文描述,这是组织上缺乏安全感还是没自信?
不要说我看不懂英文,这跟个人毛关系都没有。
不要说这是行业规范,毛规范,**的环境下规范范文也是中文。
别给人一看就觉得是外国佬的写的,这是**人写的,应该有这份自信,不要以为挂着一份英文说明书就觉得这东西好。

Requires CnPack_D101B for 10.2

I tried to install it for 10.2 but received an error saying that CnPack_D101B is required. I fixed it by changing CnPack_D101B to CnPack_D102T after it opened dclCnPack_D102T.bpl page.

建议将源码文件的编码方式改为UTF-8

目前是ANSI的,虽然没什么影响,不过在一些无法切换编码方式的编辑器里看到的中文就都是乱码了,比如在 Github Desktop 里查看修改记录就会看到很多乱码
image

CnHashTable.pas 不支持 XE10版本..

CnHashTable.pas . 列表..

function TCnBucket.CompareStrings(const S1, S2: string): Integer;

因为XE宽字符变更. LStr1 , LStr2 依赖的是长度. 这里转换不正确.
LStr1 := TCnNativeInt((S1));
LStr2 := TCnNativeInt((S2));
改为
LStr1 := TCnNativeInt(AnsiString(S1));
LStr2 := TCnNativeInt(AnsiString(S2));

不知道是否正确................

F2 shortcut not working. Save meu item does.

Hello,

Please note that the save action works only from the menu item but doesn't from the F2 shortcut.

How to reconfigure the F2 shortcut under a Classic IDE?

Best regards.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.