- 博客(0)
- 资源 (25)
- 收藏
- 关注
delphi调用百度API实现图片文字识别
用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解码正常。
2017-12-15
Raize Components Full Source 6.2.2 For Delphi 10.2 Tokyo
Raize Components Full Source 6.2.2 For Delphi 10.2 Tokyo
2017-07-31
uThreadPool.pas 线程池示例 DEMO 修正资源死锁
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;
2014-10-09
uThreadPool线程池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;
2014-10-09
Rad Studio XE4,Delphi XE4 Update1 Crack 破解补丁
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!
2013-07-01
Rad Studio XE4,Delphi XE4 Update1 Crack破解文件
Rad Studio XE4,Delphi XE4 Update1 Crack
亲测
大家尽情下载畅享Xe4 Update1吧
2013-06-30
Raize Components V6.0
支持XE2
Raize Components 包含了 90 个 Delphi 和 C++ Builder 的控件组,它的一些特点如:制定窗体框架、高级的编辑控件等都使开发者很容易的设计出灵活的、自己喜欢的样式的应用程序。
2012-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人