TInstr是一个函数吗?(10分)

  • 主题发起人 主题发起人 笑浪
  • 开始时间 开始时间

笑浪

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个调用dll的例子,调用了example.dll中的instr函数,其代码如下:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
var
order:integer;
txt:pchar;
pfunc:tfarproc;
moudle:thandle;
begin
moudle:=loadlibrary('example.dll');
if moudle>32 then
begin
edit2.Text:='';
pfunc:=getprocaddress(moudle,'myinstr');
txt:=stralloc(80);
txt:=strpcopy(txt,edit1.Text);
order:=TInStr(pfunc)(txt,key);**********************************
if order=-1 then
label3.Caption:='不包含这个字符'
else
label3.Caption:='位于第'+inttostr(order+1)+'位';
end;
freelibrary(moudle);
end;
end.
其中,加******的一句总是通不过,请问TInStr是一个函数吗?应该怎样调用才对呢?
不好意思,我只有10分了!
 
TInStr应该是一个已经定义好了的函数类型。
在利用GetProcAddess返回的函数指针时,必须进行强制类型转换。所以用到该函数类型。
myinstr是什么?如果仅仅是一个字符串常量(作为调用的过程或函数的输出名)。那么调用显然不对,
你看看是哪个函数(看name前的,例如instr的话),则应该是 pfunc:=getprocaddress(moudle,'instr');
另外对于调用的dll的路径是否正确?—— moudle:=loadlibrary('example.dll');
自己好好检查代码一下吧!
 
接受答案了.
 
后退
顶部