中控人脸考勤机delphi二次开发源代码
中控考勤机指纹机人脸机消费机delphi二次开发源代码 支持中控绝大部门型号的指纹机,感应考勤机,人脸机,消费机
中控考勤机指纹机人脸机消费机delphi二次开发源代码 支持中控绝大部门型号的指纹机,感应考勤机,人脸机,消费机
用Delphi2010编码实现。在开发中遇到了几个问题,现写出来供需要的朋友参考。 1. SSL问题,用的是indyhttp控件,使用SSL时需要添加 IdSSLIOHandlerSocketOpenSSL1 组件 然后 idhttp的iohandler 属性指向 IdSSLIOHandlerSocketOpenSSL1。 然后 SSLoptions 的method属性改为 sslvSSLv23 然后再放置两个SSL用到的 DLL 文件,可从这里下载Delphi 2010兼容的dll文件 http://pan.baidu.com/s/1mh6Lu6O 2.图片编码问题,刚开始试用了各种编码,总是提示 error_code":216201,"error_msg":"image format error 后在网上看到有人提示indy控件默认会对参数重新编码,把这个属性关闭后图片上传正常。 具体属性:httpoptions下的hoforceencodeparams关闭。 图片编码为base64,然后urlencode一下即可。 3.识别完成后的中文乱码问题 其实传回的只要utf8转为unicode的,但由于一开始图简单,用了 result:= indyhttp.post(url,img) 这样的方法来直接获取返回值,导致返回值被indy又编码了一次。然后再解码就总是不正常。 后改为post内用流接收返回值,然后再utf8解码正常。
Raize Components Full Source 6.2.2 For Delphi 10.2 Tokyo
很好的delphi android 开发入门资料,适合初学者,目前这方面的资料太少了,希望大家喜欢!
DEMO程序必须重新编译运行才能修正原资源死锁问题 取自卢伟的专栏DELPHI 线程池代码(http://blog.csdn.net/babyvspp/archive/2008/01/01/2008234.aspx),封装的十分完美,用法也非常简单,可以根据使用者设定的初始工作线程数和最大线程数以及线程执行时间自动增加工作线程。 此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。 用法: // 创建线程池 FThreadPool := TThreadsPool.Create(Self); // 创建线程池 FThreadPool.ThreadsMin := 5; // 初始工作线程数 FThreadPool.ThreadsMax := 50; // 最大允许工作线程数 FThreadPool.OnProcessRequest := DealwithCommRecvData; // 线程工作函数(DealwithCommRecvData在工作者线程的Execute方法中被调用) // 使用线程池 var AWorkItem: TRecvCommDataWorkItem; // 继承自TWorkItem begin AWorkItem := TRecvCommDataWorkItem.Create; Move(PData[0], AWorkItem.FRecvData[0], PDataLen); AWorkItem.FRecvDataLen := PDataLen; FThreadPool.AddRequest(AWorkItem); // 向线程池分配一个任务 end;
取自卢伟的专栏DELPHI 线程池代码(http://blog.csdn.net/babyvspp/archive/2008/01/01/2008234.aspx),封装的十分完美,用法也非常简单,可以根据使用者设定的初始工作线程数和最大线程数以及线程执行时间自动增加工作线程。 此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。 用法: // 创建线程池 FThreadPool := TThreadsPool.Create(Self); // 创建线程池 FThreadPool.ThreadsMin := 5; // 初始工作线程数 FThreadPool.ThreadsMax := 50; // 最大允许工作线程数 FThreadPool.OnProcessRequest := DealwithCommRecvData; // 线程工作函数(DealwithCommRecvData在工作者线程的Execute方法中被调用) // 使用线程池 var AWorkItem: TRecvCommDataWorkItem; // 继承自TWorkItem begin AWorkItem := TRecvCommDataWorkItem.Create; Move(PData[0], AWorkItem.FRecvData[0], PDataLen); AWorkItem.FRecvDataLen := PDataLen; FThreadPool.AddRequest(AWorkItem); // 向线程池分配一个任务 end;
RAD Studio XE4 Update1 破解补丁使用方法: 1. 安装 RAD Studio 时使用以下序列号 (Serial: MNFA-A3D8PK-F4BBAE-FCQN); 提示:使用破解补丁时一定要记得关闭所有杀毒软件 2. 运行一次 RAD Studio, 然后关闭。 3. 打开 RAD Studio安装目录,并找到bin目录; 例如: 32-bit: C:\Program Files\Embarcadero\RAD Studio\11.0\bin 64-bit: C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin 4. 解压 studio.xe4.(update.1)-patch.exe 文件到 bin 目录,并以管理员身份运行,点击“Patch”按钮,然后点击“close”按钮; 5. 解压 XE4SlipGen.exe 文件到bin目录,并以管理员身份运行即可完成 RAD Studio XE4 Update1 破解 Enjoy!