Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > idirc.IdIRC1PrivateMessage - неправильный вывод


Автор: pegorov 28.4.2008, 00:51
Используется BDS2006+Indy10. В результате выполнения указанной ниже процедуры возвращается собственно текст личного сообщения, но без последнего символа. В чем может быть проблема?
Код

procedure TForm3.IdIRC1PrivateMessage(ASender: TIdContext; const ANicknameFrom,
  AHost, ANicknameTo, AMessage: string);
begin
  showmessage(AMessage);
end;

Автор: Sanchezzz 28.4.2008, 19:26
в сомом компоненте... два выхода перелопатывать все через Raw (парсить) либо искать в компоненте где он -1 символ убирает. 

Не знаю по чему разработчики так сделали... 
в модуле idIRC.pas чтобы проверить это нужно заново перекомпилировать компоненты indy так что удачи!!!
---

Код

procedure TIdIRC.CommandPRIVMSG(ASender: TIdCommand);
var
  LTmp: String;
begin
  if ASender.Params[0][1] = #1 then
  begin
    ParseCTCPQuery(ASender.Params[1], ASender.Params[0]);
  end
  else if Assigned(FOnPrivMessage) then
  begin
    LTmp := copy(ASender.Params[1], 2, length(ASender.Params[1]) - 2); //думаю гдето тут поставить -1 
    OnPrivateMessage(ASender.Context, FSenderNick, FSenderHost, ASender.Params[0], LTmp);
  end;
end;


Автор: pegorov 28.4.2008, 22:52
Спасибо, Sanchezzz. Проблема решена.

Автор: DarkSkay 16.6.2008, 22:13
Похожая проблема. Отсекает последний символ при сообщении состоящем из 1 слова.
И что еще неприятнее... Когда сообщение состоит из 2 или более слов, разделенных пробелом, то пишется только 1 слово с обрубленной последней буквой...
Подскажите как пофиксить =/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)