Delphi安装后在Demos文件夹Internet下有一个叫Chat的例程,
其中有一段代码:
procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint;
  var Description: string; Scode: Integer; const Source, HelpFile: string;
  HelpContext: Integer; var CancelDisplay: Wordbool);
begin
  ShowMessage(Description);
end;
请问这是通过对象检视器(Object Inspector)添加的,还在代码编辑区中人为添加的?
我觉得这段代码的过程头有点复杂,什么Scode、HelpFile、HelpContext、CancelDisplay等等都是从哪出来的呀,它们是什么意思,为什么要这么写呀?
我查过很多书,要么根本不提,要么一语带过,郁闷ing。

解决方案 »

  1.   

    ServerSocketError是一个事件,是自动产生的,ShowMessage(Description);是在事件中编码的,该代码的目的是如果ServerSocket发生问题,就跳出Description的dialog.
      

  2.   

    不对呀,Internet面板的ServerSocket组件只有OnClientError事件,点击后只会产生如下代码
    procedure TChatForm.ServerSocketClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
       ......
    end;
    而ClientSocket组件则有一个OnError事件,也只是产生如下代码
    procedure TChatForm.ClientSocket1Error(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
       ......  
    end;
    差距太大了吧!不信大家可以看看Chat的源程序,在Demos文件夹Internet下叫Chat的例程,安装Delphi后都有的。不一样的。
      

  3.   

    在对象检视器(Object Inspector)中看看是否有事件和这段代码关联就知道了
      

  4.   

    在DFM中未发现有事件与该代码关联。
    PAS中也未发现该代码使用。
    结论:该代码是废代码。(小BUG?)
      

  5.   

    小BUG?不要这样打击我,其它的版本我不知道,反正Delphi5以后好像这个例程就存在了,且一模一样。BUG!!!!!!!1我简直要晕菜了。
    你们知道吗,这个问题困扰了我好长时间,我相信不是BUG,一定有它存在的理由。
    我隐约感觉它是对的,但就是没有完全弄懂,可能是我水平太低了,不过是人都有一个从低到高的过程。
    有谁能告诉我,有谁能告诉我,有谁能告诉我,有谁能告诉我,有谁能告诉我,有谁能告诉我
      

  6.   

    这么认真干吗?
    把这个函数删除掉仍然可以编译,不是废代码是什么?
    我估计这是在开发过程中,以前版本的TServerSocket提供了这个事件,后来这个事件被删除了,但是该代码仍然被保留了。
      

  7.   

    "函数删除掉仍然可以编译,就是废代码",这个逻辑不通呀,一个软件去掉一个功能但仍然能用,但并不能说明去掉的这个功能就没有用。
    以前我曾经查过不少资料,好像是说这段代码的功能是:当组件出错的时候,显示一个出错的信息。原话我记不清楚了,大概就是这个意思吧。但是都是一句带过,没详细说明代码的意义。
    所以根据资料的那句话,再结合原代码,我的判断就是:当出错的时候产生一个数字的代码,程序接收了这个代码,判断出是何种错误,然后调用内部的出错信息,并反馈到屏幕上,告诉软件的使用者出现了什么错误。
    但具体为什么这样实现我就真的弄不明白了。
    也许可能是这个功能,又可能它真的是废代码。但学习不能也许啦,又可能啦,这样不好。素闻此论坛卧虎藏龙,所以真希望有哪位高手能肯定且满意的解答我的疑问。渴盼ing