如何在“掌握delphi”一书中声明一个对象

时间:2013-12-10 10:07:37

标签: delphi indy

我通过书籍学习德尔福,并在本章遇到问题:http://etutorials.org/Programming/mastering+delphi+7/Part+IV+Delphi+the+Internet+and+a+.NET+Preview/Chapter+19+Internet+Programming+Sockets+and+Indy/Building+Socket+Applications/#toc

正是这种代码的和平给了我麻烦,因为我不知道在哪里写它。

object IdTCPServer1: TIdTCPServer
  CommandHandlers = <
    item
      Command = 'test'
      Name = 'TIdCommandHandler0'
      ParseParams = False
      ReplyNormal.NumericCode = 100
      ReplyNormal.Text.Strings = (
        'Hello from your Indy Server')
      ReplyNormal.TextCode = '100'
    end

2 个答案:

答案 0 :(得分:5)

这是表单的DFM文件的一部分,其中包含一个名为TIdTCPServer的非可视组件。只需在表单上放置这样的组件,然后使用属性编辑器将属性设置为给定值。例如,您必须添加命令处理程序(使用CommandHandlers属性)并将其Command属性设置为“test”。

答案 1 :(得分:1)

这是DFM文件的一部分,您不直接编辑它。我刚刚在表单上放置了一个TIdTCPServer,DFM显示:

object IdTCPServer1: TIdTCPServer
  Bindings = <>
  DefaultPort = 0
  Left = 80
  Top = 112
end

如果您右键单击表单并选择“以文本形式查看”(或者如果您在编辑器中检查.DFM文件,如果您已将配置设置为保存),则可以自行查看他们是文本。

当您开始填写TIdTCPServer的更多(非默认)属性时,Delphi也会将这些属性存储在DFM中。我没有在我的Delphi版本(XE2,Indy 10.5.8.0)中看到CommandHandlers属性,但是你的有一个(在这个例子中)。

[编辑添加]我从你对另一个答案的评论中看到你没有TIdTCPServer的CommandHandlers属性,这可能表明该书作者使用了与你不同的Indy版本。您可以通过右键单击表单上的任何Indy组件来查看您的版本。

CommandHandlers确实很老。 Googling "tidtcpserver commandhandlers"导致例如"The CommandHandlers collection was moved to a new TIdCmdTCPServer component in Indy 10."这让我怀疑你有Indy 10,书中引用了9本书。你必须找到Indy 10个例子来说明你想要做什么。 That should not be too difficult