Страница 12 из 42

Re: Технология создания плагинов и программ-дополнений

Добавлено: 07:41, 23.04.2009
Maxim Mirgorodsky
На данный момент нет.

Re: Технология создания плагинов и программ-дополнений

Добавлено: 23:19, 23.04.2009
$teelR@t
Хочу выяснить присутствуют ли для плагина к серверу такие функции как:
1. Получение списка и количества пользователей в определённом канале
2. Считывание сообщений из опредённого канала (включая имя отправившего, время...)

Re: Технология создания плагинов и программ-дополнений

Добавлено: 00:32, 24.04.2009
SunnySan
$teelR@t писал(а):Хочу выяснить присутствуют ли для плагина к серверу такие функции как:
1. Получение списка и количества пользователей в определённом канале
2. Считывание сообщений из опредённого канала (включая имя отправившего, время...)
На все эти вопросы можно найти ответ тут.
1. Да и да.
2. Да (но без времени)

Re: Технология создания плагинов и программ-дополнений

Добавлено: 13:58, 07.05.2009
Modesty
Перевёл пример Null плагина к клиенту на Delphi.
Получилось отобразить название активного канала.
А вот отправка сообщения зациклевается. После введеного слова плагин постоянно отправляет в чат одну и туже строку.
Не могу понять в чем дело. 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: Технология создания плагинов и программ-дополнений

Добавлено: 15:36, 07.05.2009
dv
[Cooбщение удаленo]

Re: Технология создания плагинов и программ-дополнений

Добавлено: 16:30, 07.05.2009
Modesty
dv писал(а): всё верно:
Сообственно как от этого избавиться??
На сколько я понимаю Result:=0 должен решать эту проблему.

Re: Технология создания плагинов и программ-дополнений

Добавлено: 02:25, 08.05.2009
dv
[Cooбщение удаленo]

Re: Технология создания плагинов и программ-дополнений

Добавлено: 08:48, 20.05.2009
VIRUS
Добрый день. Не могли бы Вы подсказать как правильно из плагина для клиента отсылать сообщения в чат. Вот мой код:

Код: Выделить всё

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));
........................
Не могу понять почему оно не работает, может я ошибся с кодом 50? Или не правильно организована функция MsgToChannel (если не сложно подправьте её)?

Re: Технология создания плагинов и программ-дополнений

Добавлено: 10:07, 20.05.2009
Modesty
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));
Channel - название канал
Text - отправляемы текст

удачи.

Re: Технология создания плагинов и программ-дополнений

Добавлено: 20:06, 20.05.2009
VIRUS
Modesty спасибо тебе большое, все получилось.

Re: Технология создания плагинов и программ-дополнений

Добавлено: 22:24, 20.05.2009
-=SJ=-
Modesty писал(а):

Код: Выделить всё

aMessageToSend:=chr(Length(Channel))+#0#0#0+Channel+chr(Length(Text))+#0#0#0+Text; {AnsiString}
CommFortProcess(dwPluginID, 50, Pchar(aMessageToSend), Length(aMessageToSend));
А если текст длиннее 255 символов? :D

P.S. Вместо

Код: Выделить всё

Length(aMessageToSend.DataString)
использую свойство стрингстрима Size

Код: Выделить всё

aMessageToSend.Size
P.P.S. Вот твоя проблема. Зачем ты заполняешь нулями первые четыре байта стрима?
Убери эти две строки из кода

Код: Выделить всё

i:=0;
Result.Write(I,4);

Re: Технология создания плагинов и программ-дополнений

Добавлено: 06:31, 21.05.2009
Modesty
-=SJ=- писал(а):А если текст длиннее 255 символов?
Это верно.
Для начала я дал рабочий пример.
А дальше, обратить внимание стоит на второй байт текста

aMessageToSend:=chr(Length(Channel))+#0#0#0+Channel+chr(Length(Text))+#0#0#0+Text;

Если он будет не нулем, а например единицей к длине текста добавляется + 255 символов. А если 2 будет? :wink:
Конечно текст и длину текста нужно сочитать.

Со стримом это конечно хорошо. Показываю данный пример для наглядности. Да и довести до функции ни чего не стоит.

Re: Технология создания плагинов и программ-дополнений

Добавлено: 23:27, 25.05.2009
-=SJ=-
dv писал(а):
-=SJ=- писал(а):Delphi Null плагин для клиента чата CommFort версии 4.20+
кажыся нерабочий.
эммм дико извиняюсь :roll: но только сечас (да, да через полтора месяца :() прочел этот пост...
Если еще актуально то что именно не рабатает?

Re: Технология создания плагинов и программ-дополнений

Добавлено: 05:40, 26.05.2009
Modesty
-=SJ=- писал(а): эммм дико извиняюсь :roll: но только сечас (да, да через полтора месяца :() прочел этот пост...
Если еще актуально то что именно не рабатает?

Код: Выделить всё

{$E 'cfcplug'}
опечатка в букавах. :)

Re: Технология создания плагинов и программ-дополнений

Добавлено: 12:07, 26.05.2009
-=SJ=-
Modesty писал(а):
-=SJ=- писал(а): эммм дико извиняюсь :roll: но только сечас (да, да через полтора месяца :() прочел этот пост...
Если еще актуально то что именно не рабатает?

Код: Выделить всё

{$E 'cfcplug'}
опечатка в букавах. :)
И в чем опечатка?
Помоему все правильно cfcplug CommFortClientPLUGin