我这有个delphi调用webservice(VS.net)的未知错误,我想贴图出来,怎么处理?
解决方案 »
- 如何把计算器完全嵌入到DELPHI界面内?而不是另外跳出来?
- delphi程序运行后,还可以进入设计器调整窗体界面字段的属性
- **超简单的问题,简直是送分,关于treeview,非常急!**
- 怎样使程序最小化时,放在任务栏????
- 学delphi前是否要系统学pascsl或者object pascal?
- 如何拦截系统的wm_paint消息
- 关于treeview...
- 用vb/vc编写的com组件中的接口方法返回的ado的recordset(类型olevariant),delphi怎么使用这个记录集?
- 如何用鼠标点击文件夹图标
- 请教关于电子磅秤的问题?请此方面高手不吝赐教!
- 发现一个好的网站~进去看看,让你不会后悔~!
- sql语句
////////////////////////////////////////////////////////////////////////////////////
function Getdefurl(user_id:WideString;password:WideString; var userdata:WideString;var errmsg:WideString):integer;stdcall;////////////////////////////////////////////////////////////////////////////////////在delphi下,编写应用程序,调用自定义dll代码如下:
procedure TForm1.webserviceClick(Sender: TObject);
type
TIntFunc = function (user_id:wideString;password:wideString; userdata:wideString; errmsg:wideString):integer; stdcall;
var
Th:Thandle;
Tf:TIntFunc;
Tp:TFarProc;
str1,str2:string ;
s1,s2,s3,s4,s5,s6:string;begin
s1:=edit1.text;
s2:=edit2.text;
s3:=edit3.text;
s4:=edit4.text;
s5:=edit5.text;
s6:=edit6.text; Th:=LoadLibrary('C:\WINDOWS\system32\uskydll.dll');
if Th>0 then
try
Tp:=GetProcAddress(Th,PChar('Getdefurl'));
if Tp<>nil then
begin
try
Tf:=TIntFunc(Tp); Tf(s1,s2,s3,s4,s5,s6,str1,str2 );
finally
showmessage('Error');
end;
userdatat.caption :=str1;
errmsgt.caption :=str2; end
else
ShowMessage('Getdefurlº¯ÊýûÓÐÕÒµ½');
finally
FreeLibrary(Th);
end
else
ShowMessage('uskydll.dllûÓÐÕÒµ½');
end;错误描述:
title:Debugger Exception Notification
message:Project apptest.exe raised exception class EAccessViolation with message 'Access violation at address 770ECA05 in module 'oleaut32.dll'. Read of address 0000000'.
Process stopped. Use step or run to continue.
title:apptest
message:Access violation at address 770ECA05 in moudle 'oleaut32.dll'.Read of address 0000000.跟踪程序没有进入dll里面,请帮忙看看
TIntFunc = function (user_id:wideString;password:wideString; userdata:wideString; errmsg:wideString):integer; stdcall;这两个里面参数定义不一样,,,把TIntFunc = function (user_id:wideString;password:wideString; userdata:wideString; errmsg:wideString):integer; stdcall;改成和声明一样
type
TIntFunc = function(user_id:WideString;password:WideString; software:WideString; ver:WideString;group_id:WideString;creditkey:WideString;var userdata:WideString;var errmsg:WideString):integer;stdcall;
var
Th:Thandle;
Tf:TIntFunc;
Tp:TFarProc;
str1,str2:String ;
s1,s2,s3,s4,s5,s6:String;begin
s1:=edit1.text;
s2:=edit2.text;
s3:=edit3.text;
s4:=edit4.text;
s5:=edit5.text;
s6:=edit6.text; Th:=LoadLibrary('C:\WINDOWS\system32\uskydll.dll');
if Th>0 then
try
Tp:=GetProcAddress(Th,PChar('Getdefurl'));
if Tp<>nil then
begin
try
Tf:=TIntFunc(Tp); Tf(s1,s2,s3,s4,s5,s6,@str1,@str2 );
finally
end; userdatat.caption :=str1;
errmsgt.caption :=str2; end
else
ShowMessage('Getdefurlº¯ÊýûÓÐÕÒµ½');
finally
FreeLibrary(Th);
end
else
ShowMessage('uskydll.dllûÓÐÕÒµ½');
end; TIntFunc = function(user_id:WideString;password:WideString; software:WideString; ver:WideString;group_id:WideString;creditkey:WideString;var userdata:WideString;var errmsg:WideString):integer;stdcall;以上函数调用已和Dll文件中声明的格式一样,可还是有错误信息,请帮忙看看。
错误信息如下:
[Error] test.pas(116): Types of actual and formal var parameters must be identical
[Fatal Error] apptest.dpr(6): Could not compile used unit 'test.pas'