首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi7开发工具这么不好?解决方案

2013-01-26 
delphi7开发工具这么不好???今天调试代码时遇到这么个恶心问题,感觉不能理解......function getclient(ter

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是正确答案。
[解决办法]
内容我没看,我看了标题进来的,我最受不了一些人自己技术不好把责任推在编译器上了。就是真有你说的问题,你技术好你换个思路做啊,再有本事,你写编译器去啊。天天就会抱怨,跟个怨妇似的。
[解决办法]
顶楼上。。

热点排行