DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 1
在线用户: 3
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 wangjiannews (wangjiannews) ★☆☆☆☆ -
普通会员
2018/9/17 10:42:36
标题:
c++ builder 转delphi xe 浏览:1025
加入我的收藏
楼主: 各位老师:我有一段 c++ builder 的代码,请问怎么转成 delphi xe的
int __fastcall TMainForm::RecBDFPHM(String &result)   //根据图片识别数字
{
    int res = -1;       
    String fn = UpperCase(ExtractFilePath(Application->ExeName)) + "WTKernal.dll";
    AddLog(fn);
    HINSTANCE hRec = LoadLibrary(fn.c_str());
    if (hRec){
        typedef __stdcall int (*TlpKernalInit)(char *szDictionaryPath);
        typedef __stdcall int (*TlpRecognizeSingleImage)(char *szImagePath, RECT rcRegion, char *pBuffer, int BufferLen, RECT &rcCell);
        typedef __stdcall void (*TlpKernalUnInit)();

        TlpKernalInit g_lpKernalInit = NULL;
        TlpRecognizeSingleImage g_lpRecognizeSingleImage = NULL;
        TlpKernalUnInit g_lpKernalUnInit = NULL;

        g_lpKernalInit = (TlpKernalInit)GetProcAddress(hRec, "KernalInit");
        g_lpRecognizeSingleImage = (TlpRecognizeSingleImage)GetProcAddress(hRec, "RecognizeSingleImage");
        g_lpKernalUnInit = (TlpKernalUnInit)GetProcAddress(hRec, "KernalUnInit");
          
        if (g_lpKernalInit != NULL && g_lpRecognizeSingleImage != NULL && g_lpKernalUnInit != NULL)
        {
          //Step 1: 初始化
          if (g_lpKernalInit(NULL) != 0)
          {
          ShowMessage( "初始化失败!");
          return res;
          }

          //Step 2: 识别指定路径图像
          char szBuffer[256] = {0};
          RECT rcRegion;//指定待识别的大致范围
          rcRegion.left = rcRegion.top = 0;
          rcRegion.right = 600;          
          rcRegion.bottom = 470;
          RECT rcSerialNo;//返回的精确坐标
          String path = UpperCase(ExtractFilePath(Application->ExeName)) + "smfphm.bmp";
          res = g_lpRecognizeSingleImage(path.c_str(), rcRegion, szBuffer, 256, rcSerialNo);
          AddLog("识别返回结果:" + String(res));
          if (0 == res)
          {
          result = String(szBuffer);
          }
          else
          {
          result = String(res);
          }

          //Step 3: 释放核心
          g_lpKernalUnInit();
        }
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/9/17 10:59:21
1楼: delphi 送的源码中一堆的 LoadLibrary 使用代码。随便抄,至少能完成前后两部分,中间仅仅是 DLL 函数调用而已。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wangjiannews (wangjiannews) ★☆☆☆☆ -
普通会员
2018/9/17 11:11:20
2楼: 那些参数有些不太明白,还请指导
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2018/9/17 13:34:39
3楼: 谁知道你哪里不太明白。。。
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 wangjiannews (wangjiannews) ★☆☆☆☆ -
普通会员
2018/9/17 15:35:23
4楼: function TForm1.RecBDFPHM(var _result: string): integer;
type
  TlpKernalInit = function(szDictionaryPath: PAnsiChar): integer; stdcall;
  RECT = TRect;
  TlpRecognizeSingleImage = function(szImagePath: PAnsiChar; rcRegion: RECT; pBuffer: PAnsiChar; BufferLen: integer; var rcCell: RECT): integer; stdcall;
  TlpKernalUnInit= procedure ();stdcall;
 var
  res: integer;
  fn: string;  // AnsiString
  hRec: THandle;
  g_lpKernalInit: TlpKernalInit;
  g_lpRecognizeSingleImage:TlpRecognizeSingleImage;
  g_lpKernalUnInit: TlpKernalUnInit;
  faz:Integer;
  rcRegion,reSerialNo: TRect;
  picpath:string;
  szbuffer:string;
  begin
    res := -1;
    fn := UpperCase(ExtractFilePath(Application.ExeName)) + 'WTKernal.dll';
    hRec := LoadLibrary(PChar(fn));
      if hRec <> 0 then
      begin
        g_lpKernalInit := nil;
        g_lpRecognizeSingleImage:=nil;
        g_lpKernalUnInit:=nil;
        g_lpKernalInit := GetProcAddress(hRec, 'KernalInit');
        g_lpRecognizeSingleImage:=GetProcAddress(hRec,'RecognizeSingleImage');
        g_lpKernalUnInit:=GetProcAddress(hRec,'KernalUnInit');

          faz :=g_lpKernalInit('');
          if faz=0 then
          begin
          szbuffer:='0';
          rcRegion.Left:=0;
          rcRegion.Top:=0;
          rcRegion.Right:=640;
          rcRegion.Bottom:=480;


          reSerialNo.Left:=0;
          reSerialNo.Top:=0;
          reSerialNo.Right:=0;
          reSerialNo.Bottom:=0;


          // picpath:=UpperCase(ExtractFilePath(Application.ExeName))+'zp.bmp';
          picpath:= ExtractFilePath(Application.ExeName)+'zp.bmp';


          //picpath:='d:\abc435.bmp';
          res:=g_lpRecognizeSingleImage(PAnsiChar(picpath),rcregion,PAnsiChar(szbuffer),256,reSerialNo);
          if res=0 then
          begin
          result:=StrToInt(szbuffer);
          end
          else
          begin
          result:=res;
          end;
          g_lpKernalUnInit();
          end
          else
          begin
          result:=res;
          end;
      end;
  end;

请各位老师指正
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行68.35938毫秒 RSS