Архив: Технология создания плагинов

Здесь обсуждаются технические аспекты создания дополнений.
$teelR@t
Сообщения: 348
Зарегистрирован: 19:14, 30.03.2008
Откуда: Украина
Контактная информация:

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

Сообщение $teelR@t »

cilvay писал(а):

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

Подключение к каналу виртуального пользователя  

ID: 1062
Блок данных: текст(имя виртуального пользователя) + текст(канал) + текст(тема канала) + текст(приветствие канала)

И это же самое значит

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

ID компьютера пользователя  

ID: 1062
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(ID компьютера)

Если пользователь не зарегистрирован, то вместо ID компьютера во входящий блок данных будет записана пустая строка.
Можете дать какие нить комментарии...
Ну так это же 2 разные функции. Первая функция - это прием сообщений PluginProcess. А вторая это Получение данных от программы - CommFortGetData.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Так, до меня дошло..
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @serg@ »

cilvay писал(а):

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

Подключение к каналу виртуального пользователя  

ID: 1062
Блок данных: текст(имя виртуального пользователя) + текст(канал) + текст(тема канала) + текст(приветствие канала)

И это же самое значит

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

ID компьютера пользователя  

ID: 1062
Блок данных (исходящий): текст(имя пользователя)
Блок данных (входящий): текст(ID компьютера)

Если пользователь не зарегистрирован, то вместо ID компьютера во входящий блок данных будет записана пустая строка.
Можете дать какие нить комментарии...
всё норм, только сложно не запутаться.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Не получается забанить пользователя

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

aDataToSend := fTextToAnsiString(form1.Edit1.text)+  //имя виртуального пользователя
	fIntegerToAnsiString(3)+  //тип. По имени пользователя
  fTextToAnsiString(uSenderLogin)+ //имя жертвы
  	fIntegerToAnsiString(0)+//тип. Отрубаем его от сервера
    fIntegerToAnsiString(form1.SpinEdit1.Value)+ //срок. Вот тут может косяк, на срок подается обычное число типа integer. к примеру в поле введено значение 7
    fTextToAnsiString('текст')+ //причина
    fIntegerToAnsiString(1); //тип анонимности
  CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend));
Не работает никак. В чем проблема?
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

cilvay писал(а):Не получается забанить пользователя

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

    fIntegerToAnsiString(form1.SpinEdit1.Value)+ //срок. Вот тут может косяк, на срок подается обычное число типа integer. к примеру в поле введено значение 7
Не работает никак. В чем проблема?
Нужно использовать DateTime (Double)
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Можно подробнее. Надо указывать часы, дни или как?
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

cilvay писал(а):Можно подробнее. Надо указывать часы, дни или как?
DateTime=Double (8 байт), где время указывается в днях. например, 1.0 - 1 день, а 0.33 - приблизительно 8 часов. Но можно использовать тип TDateTime.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Можно пример? Допустим как из числа 1 получить 1.0... И уже в нужном формате) заранее спасибо
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

cilvay писал(а):Можно пример? Допустим как из числа 1 получить 1.0... И уже в нужном формате) заранее спасибо
делфи автоматически приведет тип при присваивании:

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

var 
  I: Integer;
  D: Double;
begin
  I:=1;
  D:=I; // D = 1.0
end;
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Спасибо. Но как теперь передать на CommFortProcess тип DOUBLE

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

  D:=form1.SpinEdit1.Value;

 aDataToSend := fTextToAnsiString(form1.Edit1.text)+  //имя виртуального пользователя
	fIntegerToAnsiString(3)+  //тип важности
  fTextToAnsiString(uSenderLogin)+
  	fIntegerToAnsiString(0)+
    fIntegerToAnsiString(D)+ //Вот тут компилятор стопорится
    fTextToAnsiString('Причина')+
    fIntegerToAnsiString(1);
	  	// fTextToAnsiString(uText); //сообщение
  CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend));

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

[DCC Error] main.pas(403): E2010 Incompatible types: 'WideString' and 'Double'
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

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

Сообщение KGB »

Думаю, что понадобится функция

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

function fDoubleToAnsiString(dValue : Double) : AnsiString; //вспомогательная функция для упрощения работы с данными
begin
	//функция предназначена для ознакомительных целей,
	//не рекомендуется для реального применения,
	//так как при ее использовании проявляется избыточное копирование данных

	SetLength(Result, 8);
	CopyMemory(@Result[1], @dValue, 8);
end;
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Нашел решение: FloatToStr
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

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

Сообщение Cilvay »

Большое спасибо)
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

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

Сообщение @serg@ »

Максим, хотел бы уточнить насчёт CommFortProcess ID 51 (Отправить изображение в общий канал). Возникло подозрение, что у вас есть небольшая утечка памяти на ней. Сначала думал, что утечка была у меня, но после долгих мучений закомментировал функцию передачи этого изображения (CommFortProcess), оставив всю остальную обработку данных и потеря пропала. Даже если учесть, что изображение в клиенте тоже занимает память, то каждое обходится более мегобайта
И параллельно несколько вопросов:
1) какой максимальный размер (в байтах) изображения, которые может принь клиент?
2) какой максимальный размер для текстовых сообщений?
3) нет-ли ошибки в "число(формат изображения)" для данного ID, оно осталось как было в 4 и 3 версии?
Artur
Сообщения: 23
Зарегистрирован: 15:26, 06.10.2010
Контактная информация:

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

Сообщение Artur »

Очень не хватает приема событий как наложение/снятие ограничения(серверному плагину) :( . Сравнивать весь список довольно громоздко... Есть ли в планах добавление такой функции? :roll:
Последний раз редактировалось Artur 12:37, 25.10.2010, всего редактировалось 1 раз.
Закрыто