俺是静态调用这函数的,函数定义如下:
Function Dll_NodeTypeToCB_NodeType(NodeType: Integer): String;
Begin
Case NodeType Of
1: Result:= 'Key =按键';
-1: Result:= 'null =空';
5: Result:= 'SelfDef =自定义';
6: Result:= 'Voice =语音';
7: Result:= 'Time =时间设定';
8: Result:= 'Exit =退出';
9: Result:= 'Back =回到上一层';
10: Result:= 'BackHead =返回到首层';
22: Result:= 'Input =输入节点';
17: Result:= 'Case =结果判断';
19: Result:= 'Else =结果判断';
15: Result:= 'Parameter =参数';
28: Result:= 'Record =录音';
38: Result:= 'Flash =闪烁';
End;
End;
奇怪的是:
1:在调用此Dll函数后,她确能返回正确值如:
CB_NodeType.Text:= Dll_NodeTypeToCB_NodeType(i);//i是个Integer定义的常量,确认在Case条件中。运行完代码后才出现:Invalid Pointer Operation’错误提示。把调用她的代码屏蔽掉就不会出现这错误了。
2:后来俺实在没办法,索性直接在单元中定义一个程序代码完全Copy的函数,竟然又运行正常了。奇怪,呵呵。望各位大侠帮忙,俺从来不欠帐啊,呵呵
Function Dll_NodeTypeToCB_NodeType(NodeType: Integer): String;
Begin
Case NodeType Of
1: Result:= 'Key =按键';
-1: Result:= 'null =空';
5: Result:= 'SelfDef =自定义';
6: Result:= 'Voice =语音';
7: Result:= 'Time =时间设定';
8: Result:= 'Exit =退出';
9: Result:= 'Back =回到上一层';
10: Result:= 'BackHead =返回到首层';
22: Result:= 'Input =输入节点';
17: Result:= 'Case =结果判断';
19: Result:= 'Else =结果判断';
15: Result:= 'Parameter =参数';
28: Result:= 'Record =录音';
38: Result:= 'Flash =闪烁';
End;
End;
奇怪的是:
1:在调用此Dll函数后,她确能返回正确值如:
CB_NodeType.Text:= Dll_NodeTypeToCB_NodeType(i);//i是个Integer定义的常量,确认在Case条件中。运行完代码后才出现:Invalid Pointer Operation’错误提示。把调用她的代码屏蔽掉就不会出现这错误了。
2:后来俺实在没办法,索性直接在单元中定义一个程序代码完全Copy的函数,竟然又运行正常了。奇怪,呵呵。望各位大侠帮忙,俺从来不欠帐啊,呵呵
Function Dll_NodeTypeToCB_NodeType(NodeType: Integer): PChar;Stdcall;
好象在DLL里面用String类型会有点问题?
发布时要带上BORLANDMM.DLL
最好不要这样使用、