Страница 10 из 26

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

Добавлено: 11:36, 24.10.2010
$teelR@t
cilvay писал(а):

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

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

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

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

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

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

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

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

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

Добавлено: 11:38, 24.10.2010
Cilvay
Так, до меня дошло..

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

Добавлено: 14:04, 24.10.2010
@serg@
cilvay писал(а):

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

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

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

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

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

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

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

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

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

Добавлено: 14:13, 24.10.2010
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));
Не работает никак. В чем проблема?

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

Добавлено: 14:21, 24.10.2010
KGB
cilvay писал(а):Не получается забанить пользователя

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

    fIntegerToAnsiString(form1.SpinEdit1.Value)+ //срок. Вот тут может косяк, на срок подается обычное число типа integer. к примеру в поле введено значение 7
Не работает никак. В чем проблема?
Нужно использовать DateTime (Double)

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

Добавлено: 14:29, 24.10.2010
Cilvay
Можно подробнее. Надо указывать часы, дни или как?

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

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

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

Добавлено: 14:59, 24.10.2010
Cilvay
Можно пример? Допустим как из числа 1 получить 1.0... И уже в нужном формате) заранее спасибо

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

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

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

var 
  I: Integer;
  D: Double;
begin
  I:=1;
  D:=I; // D = 1.0
end;

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

Добавлено: 15:27, 24.10.2010
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'

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

Добавлено: 15:30, 24.10.2010
KGB
Думаю, что понадобится функция

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

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

	SetLength(Result, 8);
	CopyMemory(@Result[1], @dValue, 8);
end;

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

Добавлено: 15:32, 24.10.2010
Cilvay
Нашел решение: FloatToStr

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

Добавлено: 15:35, 24.10.2010
Cilvay
Большое спасибо)

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

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

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

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