delphi7开发工具这么不好???
今天调试代码时遇到这么个恶心问题,感觉不能理解......
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是正确答案。
[解决办法]
内容我没看,我看了标题进来的,我最受不了一些人自己技术不好把责任推在编译器上了。就是真有你说的问题,你技术好你换个思路做啊,再有本事,你写编译器去啊。天天就会抱怨,跟个怨妇似的。
[解决办法]
顶楼上。。