delphi7开发工具这么不好???
今天调试代码时遇到这么个恶心问题,感觉不能理解......
- Delphi(Pascal) code
function getclient(termid:string;moterid:string):TSimpleClient;var i:integer;begin {$IFDEF debuger} CodeSite.EnterMethod('getclient'); {$ENDIF} if cici=true then exit else begin //mainform.LogAddText('getClientByUserid'); with clientlist.LockList do begin //mainform.LogAddText('LockList'); for i:=0 to count-1 do if ((TRIM(TSimpleClient(items[i]).moter)=TRIM(moterid)) and (TRIM(TSimpleClient(items[i]).term)=TRIM(termid))) then begin result:=TSimpleClient(items[i]); //调试时resule得到的结果不是nil clientlist.UnlockList; //mainform.LogAddText('UnLockList'); {$IFDEF debuger} CodeSite.SendMemoryAsHex('client',@Result,sizeof(TSimpleClient)); CodeSite.ExitMethod('getclient'); {$ENDIF} exit; end; end; clientlist.UnlockList; //mainform.LogAddText('UnLockList'); end; result:=nil; {$IFDEF debuger} CodeSite.SendMsg('nil'); CodeSite.ExitMethod('getclient'); {$ENDIF}end;在clienttmp:=getclient(termid,moterid);调用上述函数时,内部getclient的result得到的不是nil,而结果clienttmp却是nil,不能理解......然后我重新定义了一个和clienttmp类型一样的变量stateclient,却能正常运行了....此处clienttmp是局部变量,内部其他地方没有引用,真有点搞不懂......
[解决办法]
function getclient(termid:string;moterid:string):TSimpleClient;
是 TSimpleClient
result
是 TSimpleClient(items[i]);
[解决办法]
可能是优化模式的缘故?关闭优化试一试
[解决办法]
将就用
[解决办法]
你函数退出前不都result:=nil;了吗,怎么不能理解呢?
[解决办法]
#4是正确答案。
[解决办法]
内容我没看,我看了标题进来的,我最受不了一些人自己技术不好把责任推在编译器上了。就是真有你说的问题,你技术好你换个思路做啊,再有本事,你写编译器去啊。天天就会抱怨,跟个怨妇似的。
[解决办法]
顶楼上。。