各位大哥请问const char *在DELPHI里用什么类型代替?能用Pchar吗?
我在调用一个DLL里的一个函数时,它里面的函数的原型是:InitSMGPAPI(const char *);请问我在DELPHI里怎么声明!谢谢!
我在调用一个DLL里的一个函数时,它里面的函数的原型是:InitSMGPAPI(const char *);请问我在DELPHI里怎么声明!谢谢!
解决方案 »
- delphi7 无法启动 运行delphi32.exe也没有任何反应。
- 关于TSTRINGS TSTRINGLIST TLIST 三者的区别?搞糊涂了
- 关于fastreport分栏打印的问题
- 基于RTSP的REALPLAY10的缓存播放功能如何实现?
- 请推荐有什么学习报表的好文章? 70分全送他。
- delphi中如何杀死进程?
- 赋值
- 关于XE里的ClientDataSet.XMLData中文乱码问题
- 请问listview中我用multiseleted = true 后,如何对选中的进行删除
- 在数据库中,如何得到当前记录指针所在位置,并如何转换成数字型.
- 打印的问题(Image区域)---菜鸟起步呀!
- 请问,怎么写错误捕获,要捕获所有exception?
procedure InitSMGPAPI(yourParam: PChar); stdcall;
就OK了!
procedure InitSMGPAPI(yourParam: PChar); stdcall;
////////////////////////////////////////
function InitSMGPAPI(s:pchar):integer ; external 'D:\test\SmGwAPI.dll' ;
procedure TForm1.Button1Click(Sender: TObject);
var
p:pchar;
i:integer;
begin
getmem(p,255);
p:='D:\test\smgpc.ini';
i:=InitSMGPAPI(p);
end;
////////////////////////
在调用时出错。出错信息是:
project d:\test\project1.exe faulted whit message:'access violation at 0xxxe13164:write of address 0x0000eb01
procedure TForm1.Button1Click(Sender: TObject);
var
p:pchar;
i:integer;
begin
getmem(p,255);
p:='D:\\test\\smgpc.ini';
i:=InitSMGPAPI(p);
FreeMem(p);
end;
先声明函数的类型:
type
func = function InitSMGPAPI(s:pchar):integer ;
再调用:
var moudle: THandle;
PFunc: TFarProc;
i: Integer;
begin
Moudle := Loadlibrary('h:\test\dll\Project1.dll');
if Moudle>32 then
begin
Pfunc := GetProcAddress(Moudle,InitSMGPAPI);
i := func(Pfunc)('a');
ShowMessage(IntToStr(i));
end;
Freelibrary(Moudle);
end;