首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求高手把这个dephi 掺杂汇编 翻译成vb?或者解释下意思也行,感谢!该如何处理

2012-02-29 
求高手把这个dephi 掺杂汇编 翻译成vb??或者解释下意思也行,感谢!求高手把这个dephi 掺杂汇编 翻译成vb??

求高手把这个dephi 掺杂汇编 翻译成vb??或者解释下意思也行,感谢!
求高手把这个dephi 掺杂汇编 翻译成vb??或者解释下意思也行,感谢!

Delphi(Pascal) code
 function OcrInit:boolean;stdcall ; external 'AdvOCR'  ; procedure OcrDone ;stdcall;external 'AdvOCR';         // Destroy procedure  OCR_C(var picType:string;var picName:string);stdcall;external 'AdvOCR'; function  OCR_identify (picName,types:string):string;var  u1,u2,u3,u4:byte;begin  asm    push picName    push types    call ocr_c    xor ecx,ecx    mov cl,byte ptr [eax]    mov u1,cl    mov cl,byte ptr[eax+1]    mov u2,cl    mov cl,byte ptr[eax+2]    mov u3,cl    mov cl,byte ptr[eax+3]    mov u4,cl  end;result:=chr(u1)+chr(u2)+chr(u3)+chr(u4);end; 调用: b:= 'alibaba';//库中一种识别类型      a:=图片; edit1.Text:= OCR_identify(a,b);


RT


[解决办法]
探讨
引用:

这个汇编代码其实很简单,就是标准的 stdcall 方式调用 dll 中的函数。

将参数从后往前推入堆栈,然后call开始调用。调用完成返回一个指针,放在eax寄存器里面,指向一个4字节的地址。

VB要调用的话很简单,用 CopyMemory 拷贝到数组或者结构体里面就可以了。


这个,大哥,能麻烦你给我写个vb的调用代码吗?不是我懒……

[解决办法]
Delphi(Pascal) code
function OcrInit:boolean;stdcall ; external 'AdvOCR'  ; procedure OcrDone ;stdcall;external 'AdvOCR';         // Destroy procedure  OCR_C(var picType:string;var picName:string);stdcall;external 'AdvOCR'; function  OCR_identify (picName,types:string):string; // 迷惑性的参数顺序,实际参数命名应该交换一下var  u1,u2,u3,u4:byte;begin  asm    push picName    push types    call ocr_c        ; stdcall调用, 此处相当于 ocr_c(types, prcName); 所以说上边参数命名很迷惑    xor ecx,ecx            ;    mov cl,byte ptr [eax]     ;因为call ocr_c后返回的结果在eax,看上下文应该是返回一个指针,下面几句的意思是将指针指向的地址随后的四个字节的值分别存放到u1到u4    mov u1,cl    mov cl,byte ptr[eax+1]    mov u2,cl    mov cl,byte ptr[eax+2]    mov u3,cl    mov cl,byte ptr[eax+3]    mov u4,cl  end;result:=chr(u1)+chr(u2)+chr(u3)+chr(u4);  将u1到u4四个ascii码转换成4个字符,然后联成字符串,然后返回result。 result在delphi中比较特殊,代表函数的返回值end; 调用: b:= 'alibaba';//库中一种识别类型      a:=图片; edit1.Text:= OCR_identify(a,b);    // 这个意思就是将调用ocr_identify后的字符串显示在窗口的text输入框中 

热点排行