Помощь - Поиск - Пользователи - Календарь
Полная версия: TMrim
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Unconnected
Mrim - компонент для работы с протоколом mail Agent. Написал его Алексей Панов, и приложение тоже написал, наподобие mail-агент. Подробнее здесь: http://andml.org.ru/opensource.htm . Так вот, проект с открытым исходным кодом. Так вот, на сайте можно скачать исходник (Delphi) всего приложения. А сам компонент, как я понял, это Mrim.pas. Но при его компиляции мало того, что нужны сторонние компоненты, служащие для графического отображения элементов, так ещё и ошибки возникают.. (Undeclared identifier, например). Вот возник вопрос, может я совсем не то компилирую? [Delphi 2007]
volvo
Цитата
мало того, что нужны сторонние компоненты, служащие для графического отображения элементов, так ещё и ошибки возникают.. (Undeclared identifier, например).
Так это не "мало того", а именно из-за того, что у тебя не установлены сторонние компоненты, и возникают ошибки. Автор mrim написал ведь, какие компоненты должны быть установлены дополнительно, перед тем, как компилировать сам mrim.pas:
http://andml.org.ru/devel/tips.htm
Ты все установил из списка?

Кстати, у проекта есть форум, если не получается установить себе программу - кто лучше автора тебе объяснит, что именно за проблема?
Unconnected
Так в том то и дело, что установил всё, на один RxLib для Delphi 2007 сколько времени убил.. А на форуме регистрация не работает временно. Общался с автором по Jabber'у, у него времени нету пока что..

Добавлено через 15 мин.
Пример такой ошибки:
В модуле PopCliFr на строке pop.Connect(-1); получается [DCC Error] popCliFr.pas(111): E2250 There is no overloaded version of 'Connect' that can be called with these arguments
volvo
Цитата
Пример такой ошибки:
В модуле PopCliFr на строке pop.Connect(-1); получается [DCC Error] popCliFr.pas(111): E2250 There is no overloaded version of 'Connect' that can be called with these arguments
Ну, этот (-1) можешь спокойно убрать (возможно - проблема в том, что автор работал на другой, более ранней версии Дельфи), поскольку теперь вызов
pop.Connect;
подразумевает использование в качестве тайм-аута константы IdTimeoutDefault, которая и так равна (-1)
Unconnected
Ага, спасибо..
Unconnected
Нашёл более простой компонент для работы с MRIM (TMailClient), устанавливается сразу, по функционалу совсем немного беднее, ну да мне не все функции нужны. Решил сделать своеобразный "гибрид", добавить в TmailClient, как в более простой, некоторые нужные мне функции из MRIM. Так вот, функция добавления Телефонного контакта:

Код
procedure TMrim.Add_phone_user(nick,phone: string);
var
  add: string;
  buf: string;
begin
  mail_to_add:= 'phone';
  nick_to_add:= nick;
  phone_to_add:= phone;
  add:= setLPS('phone');
  nick:= setLPS(nick);
  phone:=setLPS(phone);
  buf:= setUL(CONTACT_FLAG_SMS)+setUL(103)+add+nick+phone+ setUL(MA_SPACE);
  sendLPS(num,MRIM_CS_ADD_CONTACT,buf,length(buf)div 2);
end;


Это в MRIM. Если разобраться, то входные параметры сначала преобразуются в какой-то иной вид (использовал процедуры из TMRIM (setLPS,setUL)), формируется запрос, а в предпоследней строке он отправляется на сервер. Так вот, в MRIM отправка производится сразу компонентом (т.е. он сам создаёт TCP подключение), а в TMailClient нужно отдельно подключаться с помощью компонента TTCPClient, а потом поверх этого подключения работать.. Поэтому неясно, как отправлять в TMailClient (там есть процедуры типа sendpack, но входныу параметры иные, чем у sendLPS).

Unconnected
Код
Procedure tmailclient.add_sms_contact(var nick,phone:string);
var
  Pack:TMRIMPacket;
  Data:Pointer;
  add:string;
begin
  MMP_Pack(@Pack, FSeq, MRIM_CS_ADD_CONTACT, FSocket.Port, FSocket.IP);
  MMP_addUL(@Pack,data,CONTACT_FLAG_SMS);
  MMP_addUL(@Pack,data,103);
  MMP_addLPS(@Pack,data,'phone');
  mmp_addlps(@Pack,data,nick);
  mmp_addlps(@Pack,data,phone);
  MMP_addUL(@Pack,data,MA_SPACE);
  MMP_SendPack(FSocket.Socket, @Pack, Data);
  FSeq:= FSeq + 1;
  FreeMem(Data);
end;


Получилось вот так, вроде как надо,но не работает..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.