Технология создания плагинов и программ-дополнений
-
- Администратор
- Сообщения: 6886
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
На данный момент нет.
Re: Технология создания плагинов и программ-дополнений
Хочу выяснить присутствуют ли для плагина к серверу такие функции как:
1. Получение списка и количества пользователей в определённом канале
2. Считывание сообщений из опредённого канала (включая имя отправившего, время...)
1. Получение списка и количества пользователей в определённом канале
2. Считывание сообщений из опредённого канала (включая имя отправившего, время...)
Не важно как долго ты будеш подниматься, упасть ты можеш в мгновенье ока.
Макс Пейн.
Макс Пейн.
Re: Технология создания плагинов и программ-дополнений
На все эти вопросы можно найти ответ тут.$teelR@t писал(а):Хочу выяснить присутствуют ли для плагина к серверу такие функции как:
1. Получение списка и количества пользователей в определённом канале
2. Считывание сообщений из опредённого канала (включая имя отправившего, время...)
1. Да и да.
2. Да (но без времени)
Зло - это невежество
Re: Технология создания плагинов и программ-дополнений
Перевёл пример Null плагина к клиенту на Delphi.
Получилось отобразить название активного канала.
А вот отправка сообщения зациклевается. После введеного слова плагин постоянно отправляет в чат одну и туже строку.
Не могу понять в чем дело. Help!
итог в чате:
.....
[16:54:09] Modesty: text
[16:54:09] Modesty: text
[16:54:09] Modesty: text
[16:54:09] Modesty: text
и т.д. до победного.
........
Получилось отобразить название активного канала.
А вот отправка сообщения зациклевается. После введеного слова плагин постоянно отправляет в чат одну и туже строку.
Не могу понять в чем дело. Help!
Код: Выделить всё
function PluginProcess(dwMessageID : DWORD; bMessage : PString; dwMessageLength : DWORD) : BYTE;
var aMessageToSend : AnsiString;
aChannel : AnsiString;
iLen : Integer;
begin
if dwMessageID = 5 then
begin
aMessageToSend:=MsgToChannel('main','text');
CommFortProcess(dwPluginID, 50, Pchar(aMessageToSend), Length(aMessageToSend));
//Пример получения и отображения названия активного канала:
{ iLen := CommFortGetData(11, nil, 0);
SetLength(aChannel, iLen);
CommFortGetData(11, Pchar(aChannel), iLen);
ShowMessage(aChannel);}
end;
Result := 0;
end;
.....
[16:54:09] Modesty: text
[16:54:09] Modesty: text
[16:54:09] Modesty: text
[16:54:09] Modesty: text
и т.д. до победного.
........
Re: Технология создания плагинов и программ-дополнений
[Cooбщение удаленo]
Последний раз редактировалось dv 03:34, 26.06.2012, всего редактировалось 1 раз.
Дополнения для CommFort
Адрес чата: chat.telered.ru
.
Адрес чата: chat.telered.ru
.
Re: Технология создания плагинов и программ-дополнений
Сообственно как от этого избавиться??dv писал(а): всё верно:
На сколько я понимаю Result:=0 должен решать эту проблему.
Re: Технология создания плагинов и программ-дополнений
[Cooбщение удаленo]
Последний раз редактировалось dv 03:34, 26.06.2012, всего редактировалось 1 раз.
Дополнения для CommFort
Адрес чата: chat.telered.ru
.
Адрес чата: chat.telered.ru
.
Re: Технология создания плагинов и программ-дополнений
Добрый день. Не могли бы Вы подсказать как правильно из плагина для клиента отсылать сообщения в чат. Вот мой код:
Не могу понять почему оно не работает, может я ошибся с кодом 50? Или не правильно организована функция MsgToChannel (если не сложно подправьте её)?
Код: Выделить всё
function MsgToChannel(сhannel, text : String): TStringStream;
var
i : Longint;
begin
Result:=TStringStream.Create('');
Result.Position:=0;
i:=0;
Result.Write(I,4);
i:=length(channel);
Result.Write(I,4);
Result.WriteString(channel);
i := length(text);
Result.Write(I,4);
Result.WriteString(text);
end;
........................
var
aMessageToSend:TStringStream;
begin
aMessageToSend:=MsgToChannel('main','TEST');
CommFortProcess(dwPluginID,50,PChar(aMessageToSend.DataString),Length(aMessageToSend.DataString));
........................
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Re: Технология создания плагинов и программ-дополнений
VIRUS писал(а): Не могу понять почему оно не работает, может я ошибся с кодом 50? Или не правильно организована функция MsgToChannel (если не сложно подправьте её)?
код 50 верен. Функция организована правельно, но не совсем. Почитай руководство по плагинам.
Без функции (процедуры) я сформировал строчку для отправки так:
Код: Выделить всё
aMessageToSend:=chr(Length(Channel))+#0#0#0+Channel+chr(Length(Text))+#0#0#0+Text; {AnsiString}
CommFortProcess(dwPluginID, 50, Pchar(aMessageToSend), Length(aMessageToSend));
Text - отправляемы текст
удачи.
Re: Технология создания плагинов и программ-дополнений
Modesty спасибо тебе большое, все получилось.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Re: Технология создания плагинов и программ-дополнений
А если текст длиннее 255 символов?Modesty писал(а):Код: Выделить всё
aMessageToSend:=chr(Length(Channel))+#0#0#0+Channel+chr(Length(Text))+#0#0#0+Text; {AnsiString} CommFortProcess(dwPluginID, 50, Pchar(aMessageToSend), Length(aMessageToSend));

P.S. Вместо
Код: Выделить всё
Length(aMessageToSend.DataString)
Код: Выделить всё
aMessageToSend.Size
Убери эти две строки из кода
Код: Выделить всё
i:=0;
Result.Write(I,4);
Re: Технология создания плагинов и программ-дополнений
Это верно.-=SJ=- писал(а):А если текст длиннее 255 символов?
Для начала я дал рабочий пример.
А дальше, обратить внимание стоит на второй байт текста
aMessageToSend:=chr(Length(Channel))+#0#0#0+Channel+chr(Length(Text))+#0#0#0+Text;
Если он будет не нулем, а например единицей к длине текста добавляется + 255 символов. А если 2 будет?

Конечно текст и длину текста нужно сочитать.
Со стримом это конечно хорошо. Показываю данный пример для наглядности. Да и довести до функции ни чего не стоит.
Re: Технология создания плагинов и программ-дополнений
эммм дико извиняюсьdv писал(а):кажыся нерабочий.-=SJ=- писал(а):Delphi Null плагин для клиента чата CommFort версии 4.20+


Если еще актуально то что именно не рабатает?
Re: Технология создания плагинов и программ-дополнений
-=SJ=- писал(а): эммм дико извиняюсьно только сечас (да, да через полтора месяца
) прочел этот пост...
Если еще актуально то что именно не рабатает?
Код: Выделить всё
{$E 'cfcplug'}

Re: Технология создания плагинов и программ-дополнений
И в чем опечатка?Modesty писал(а):-=SJ=- писал(а): эммм дико извиняюсьно только сечас (да, да через полтора месяца
) прочел этот пост...
Если еще актуально то что именно не рабатает?опечатка в букавах.Код: Выделить всё
{$E 'cfcplug'}
Помоему все правильно cfcplug CommFortClientPLUGin