2013-12-10 3 views
0

Im обучение Дельфы через книги, и я сталкиваясь с проблемой в этой главе: 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Как объявить объект в «Mastering Дельфи» книги

Именно этот мир кода, который дает мне неприятности, потому что я не знаю, где Напиши это.

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 

ответ

5

Это является частью DFM файла формы с невизуального компонентом, который называется TIdTCPServer на нем. Просто поместите такой компонент в свою форму и используйте редактор свойств, чтобы задать свойства для заданных значений. Например, вам нужно добавить обработчик команд (используя свойство CommandHandlers) и установить его свойство «Command» в «test».

+0

idTcpServer здесь не имеет свойства команды. Где-то еще я должен смотреть? – Eszee

+0

@ Eszee жаль, пропустил тот факт, что это свойство обработчика команд. Отредактировал ответ. – jpfollenius

+0

Мой сервер Indy 10 не имеет свойства обработчика команд – Eszee

1

Это часть файла DFM, которую вы не редактируете напрямую. Я просто разместил TIdTCPServer на форме и DFM показывает:

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

Вы можете увидеть это для себя, если вы щелкните правой кнопкой мыши на форме и выберите «Просмотр в виде текста» (или, если вы инспектировать файлы .dfm в редактор если вы установили ваши настройки, чтобы сохранить их в виде текста.

Когда вы начинаете заполнять более (не по умолчанию) свойства TIdTCPServer, Delphi будет хранить их в DFM, а также. Я не см. свойство CommandHandlers в моей версии Delphi (XE2, Indy 10.5.8.0), но у вас есть один (в примере).

[Отредактировано для добавления] Я вижу из вашего комментария о другом ответе, что у вас также нет свойства CommandHandlers для TIdTCPServer, это может указывать на то, что автор книги использовал другую версию 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.

+0

Или вы можете нажать сочетание клавиш «ALT + F12», чтобы переключиться между дизайном формы и источником формы. – TLama

+0

прав, что я боялся. В моей версии тоже нет. Есть ли способ заявить об этом? – Eszee

+0

Да, я знаю, hes использовал indy 9 и im, используя indy 10. Это уже вызвало некоторые проблемы, но ничего не удалось исправить, до сих пор – Eszee

Смежные вопросы