这个问题怎么就没有人给帮忙解决啊,急啊!(100)

E

ecjtuhr

Unregistered / Unconfirmed
GUEST, unregistred user!
一个项目开发环境是delphi 6+ IBMWebsphere+oracle程序在台式机上能运行调试,并且在别人的笔记本上也能调试,可是在我的笔记本上就不行,即使重装系统也是如此,我跟踪了一下,代码如下:[red]mid_server.xmllogic('QuerySQL', EncodingStrReplace(XML_Inparams.XML.Text), ResInf);[/red]到这步后运行调用下面蓝色部分的函数,[blue]function TMidOperator.EncodingStrReplace(Str: WideString): WideString;begin Result := SysUtils.StringReplace(Str, 'encoding="gb2312"', 'encoding="UTF-8"', [rfIgnoreCase,rfReplaceAll])end;[/blue]在返回到这句,result := ResInf.intv; [brown]//正常时应为1[/brown],而我的却是0,之后我找了下ResInf,它是这样定义的:ResInf: resultinf;我又再找了下resultinf,结果在以下单元代码中,unit GAMidAgent;interface{$DEFINE DELPHI6}uses InvokeRegistry, Types, XSBuiltIns;type resultinf = class; { "http://inf.tri.com" } resultinf = class(TRemotable) private FfisrtXML: WideString; Fintv: Integer; Fintvsec: Integer; FsecXML: WideString; published property fisrtXML: WideString read FfisrtXML write FfisrtXML; property intv: Integer read Fintv write Fintv; property intvsec: Integer read Fintvsec write Fintvsec; property secXML: WideString read FsecXML write FsecXML; end; GAMidAgentImpl = interface(IInvokable) ['{DF0D26F5-89C2-A314-7194-6F363E33287F}']{$IFDEF DELPHI6} procedure xmllogic(const opname: WideString; const inParams: WideString; out xmllogicReturn: resultinf); stdcall;{$ELSE} function xmllogic(const opname: string; const inParams: string): resultinf; stdcall; //procedure xmllogic(const opname: String; const inParams: String;out xmllogicReturn:resultinf); stdcall;{$ENDIF} end;function GetGAMidAgentImpl(UseWSDL: Boolean = System.False; Addr: string = ''): GAMidAgentImpl;implementationuses SOAPHTTPClient;function GetGAMidAgentImpl(UseWSDL: Boolean; Addr: string): GAMidAgentImpl;const defWSDL = 'http://localhost:7001/GAMidAgent/services/GAMidAgent?wsdl'; defURL = 'http://localhost:7001/GAMidAgent/services/GAMidAgent'; defSvc = 'GAMidAgentImplService'; defPrt = 'GAMidAgent';var RIO: THTTPRIO;begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; RIO := THTTPRIO.Create(nil); //UseWSDL:=False; try if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; RIO.HTTPWebNode.UseUTF8InHeader := True; //laifd Result := (RIO as GAMidAgentImpl); finally if Result = nil then RIO.Free; end;end;initialization InvRegistry.RegisterInterface(TypeInfo(GAMidAgentImpl), 'http://wsagent.ejb.triman.com'); // InvRegistry.RegisterDefaultSOAPAction(TypeInfo(GAMidAgentImpl), ''); RemClassRegistry.RegisterXSClass(resultinf, 'http://inf.tri.com', 'resultinf');end.在红色的部分,参数是将登入信息包装成xml格式的文件,提交给中间层,可是经过蓝色的部分后,没有返回的信息,也就是说返回也应该是一个xml格式的数据,我对比调试了一下,别人的机器都能返回,并且result := ResInf.intv;//ResInf.intv:=1,而我的是0,问了很多编程高手都未能搞顶,真是郁闷啊,这个问题困扰我好久了啊,如果谁能搞定,我分全给你.急啊.
 
怎么没有颜色啊,我明明标注了的啊.
 
肯定是你的电脑的问题,字体或者说明没有安装,你安装的是ghost版本吧
 
应该是你电脑运行环境的问题。我有个同事装的XP + IE7,调用IIS的WebService时,有时候有问题,有时候没有问题。郁闷的很。还有一同事,装机用的是家庭版,调用IIS的WebService,别说返回值了。调用就出错。建议,换个版本的操作系统,或同版本的换个安装盘。好好调配你的调试环境,有时候一个小问题,都让你郁闷老常时间。(嘿嘿,IE7比IE6新吧,功能全吧,但和他的电脑上的xp版本配合起来不好用呀)
 
[red]我在试试[/red]
 
草原骏马:我换个几个版本啊,我昨天又重装了下专业版xp,之后马上装delphi6,oracle和ibmwebsphere,配好后,还是不能调试啊,怪就怪在打包后不是有个exe文件吗,我把别人电脑上生成的exe文件替换我的,双击可以运行,但是当我点击delphi中的运行按扭后,它就编译了一遍,提示什么"Invalid data packet ",那个exe文件双击后也出现这个提示,我保证这个代码我一个字都没变的,只不过是从别人的电脑上拷到我的笔记本上而已,而且delphi6,oracle和ibmwebsphere的配置也100%一样的,我问了很多编程高手也未能解决.
 
我今天特意拿我的笔记本去做了检测,要到下星期三才能拿到,可不大可能是电脑出了问题,因为我才买半年啊是asus的,要是电脑有问题也只能怀疑是网卡了,因为我这个项目在用户登入时读取了用户操作电脑的ip和网卡地址,否则就不可能是电脑的问题了.咳,现在的问题是还没有找到问题的所在啊.
 
顶部