unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure IMG2BMP(filename : PChar); Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'IMG2BMP';
function OcrInit : boolean; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OcrInit';
procedure OcrDone; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OcrDone';
function OCR_C(OCR_type,filename : PChar): PChar; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OCR_C';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d:string;
begin
a:='f:\q.jpg';
b:='f:\q.bmp';
c:='163_esales';
// IMG2BMP(PChar(a));
d:= StrPas(OCR_C('163_esales',PChar(b)));
memo1.Text:='证码识别值:'+d;
end;
end.才学调用dll,这个IMG2BMP(PChar(a));好像能成功。而ocr_c就没反应了,我找了别人一源程序,反复看都差不多。别人的有效果。而我的不行,这是为什么?我这样弄是正确的吗?烦请指点,谢谢了~~~
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure IMG2BMP(filename : PChar); Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'IMG2BMP';
function OcrInit : boolean; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OcrInit';
procedure OcrDone; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OcrDone';
function OCR_C(OCR_type,filename : PChar): PChar; Stdcall;external 'E:\down\advocr\AdvOCR.dll' name 'OCR_C';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d:string;
begin
a:='f:\q.jpg';
b:='f:\q.bmp';
c:='163_esales';
// IMG2BMP(PChar(a));
d:= StrPas(OCR_C('163_esales',PChar(b)));
memo1.Text:='证码识别值:'+d;
end;
end.才学调用dll,这个IMG2BMP(PChar(a));好像能成功。而ocr_c就没反应了,我找了别人一源程序,反复看都差不多。别人的有效果。而我的不行,这是为什么?我这样弄是正确的吗?烦请指点,谢谢了~~~
解决方案 »
- 急问:在delphi 中如何建立一个队列??先入先出
- 如何查找汉字的内码?如何根据内码显示汉字?
- 从文本文件转换到 sql server 2000?用代码怎么实现?在线~~~~~~~~~~~~
- 将windows字体改大之后,控件对不上位了
- Webbrowser 响应On click 事件 问题
- 大家能不能帮我测试一上,在windows2000pro 下 整型字段问题不能insert into ?很烦!!!!!
- 散分了,怎么样通过应用程序句柄获得这个程序的主窗口句柄
- 请教一个关于数据库的问题
- 寻求(client)socket对远程主机多线程查询的例子
- 仁者见仁,智者见智,广泛征求意见:关于绘图组件开发问题!!
- 怎么统计数据后生成报表,马上送分!!!
- 给月亮兄弟补分。新婚也完了,蜜月也过了,等你造人了!
var
Form1: TForm1;
procedure IMG2BMP(filename : PChar); Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'IMG2BMP ';
function OcrInit : boolean; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OcrInit ';
procedure OcrDone; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OcrDone ';
function OCR_C(OCR_type,filename : PChar): PChar; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OCR_C ';
implementation
{$R *.dfm} //对比一下区别吧。其他的我就暂时不看了。
//动态库你最好是放在应用程序文件夹或是系统文件夹中,不要用绝对路径。 var
Form1: TForm1; implementation
{$R *.dfm} procedure IMG2BMP(filename : PChar); Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'IMG2BMP ';
function OcrInit : boolean; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OcrInit ';
procedure OcrDone; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OcrDone ';
function OCR_C(OCR_type,filename : PChar): PChar; Stdcall;external 'E:\down\advocr\AdvOCR.dll ' name 'OCR_C ';
AdvOCR.dll 放在应用程序下,不必使用绝对路径。
Function PinPad_Reset:integer;stdcall;external 'pinpad.dll';
中的参数没有传对吧,两个都是PChar类型,而你第一个传的是string类型
不要直接就说没有效果,先想想为什么.
比如上面函数是否要调用,对照demo比比.
看下OCR_C的返回值.
还有一个重要的一点,你没看到这个函数返回的是pchar吗?
是个指针,既然是指针就得分配内存?如果他给你分配这个内存谁会来释放呢?
所以感觉你这个OCR_C函数会不会有问题.