Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2011, 16:19   #1
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
Вопрос как узнать объект по методу?

Здравствуйте! Подскажите, пожалуйста! Работаю с ICQ при помощи библиотеки vbicq4 и создаю ICQ с UIN и пароль динамически.. дошел до обработки ошибок ICQ. А в public delegate void ErrDelegate(string d); есть только описание ошибки! как мне можно получить UIN той учетной записи, на которой произошла ошибка?
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 31.10.2011, 16:50   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

В тексте ошибки, если ошибка происходит в библиотеке, тогда больше никак ( без особых извращений). Без кода программы Вам, думаю, никто ничем дельным не поможет. Рефлексия, скорее всего не прокатит, поэтому код в студию.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 31.10.2011, 17:58   #3
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

это у меня мои ICQ:
Код:
public static List<vbicq4.vbicq4> icqs = new List<vbicq4.vbicq4>();
Создание и подключение новой учетной записи:
Код:
      newICQ = new vbicq4.vbicq4();
                newICQ.UIN = uin;
                newICQ.pass = pw;
                newICQ.connect(vbicq4.vbicq4.ICQ_Status.FFC);

                newICQ.onConnect += onICQConnected;
                newICQ.onDisconnect += onICQDisconnected;
                newICQ.onMessage += onICQMessage; 
                newICQ.onError += onICQError;

                icqs.Add(newICQ);
Не знаю как правильно это называется:
Код:
        public delegate void ErrDelegate(string d);
        public delegate void MsgDelegate(string u, string m);
        public delegate void onConDelegate();
Метод обработки ошибок ICQ:
Код:
        //При ошибке
        public void onICQError(string errMsg)
        {
            if (InvokeRequired)
            {
                this.BeginInvoke(new ErrDelegate(onICQError), errMsg);
                return;
            }

            
        }
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 01.11.2011, 09:46   #4
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Код:
public void onICQError(string errMsg)
        {
           string errorUin = this.uin; // ?
            if (InvokeRequired)
            {
                this.BeginInvoke(new ErrDelegate(onICQError), errMsg);
                return;
            }
        
            
        }
нет ?
Guy вне форума Ответить с цитированием
Старый 01.11.2011, 10:12   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
нет ?
помоему делегаты же идут от имени того контекста this, которому принадлежит метод.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.11.2011, 10:37   #6
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Guy Посмотреть сообщение
Код:
public void onICQError(string errMsg)
        {
           string errorUin = this.uin; // ?
            if (InvokeRequired)
            {
                this.BeginInvoke(new ErrDelegate(onICQError), errMsg);
                return;
            }
        
            
        }
нет ?
Нет, нету свойства UIN.. и такая проблема будет со всеми методами vbicq4.. есть еще предложения по решению этой проблемы?
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 01.11.2011, 11:27   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
class MyICQ
{
    public delegate void OnErrDelegate(vbicq4.vbicq4 sender;string d);//не помню как верно это все обьявлять
    public OnErrDelegate OnError;

    public vbicq4.vbicq4 icq;
    private void ICQError(string errMsg)
    {
        OnError(icq,errMsg);
    }
    MyICQ()
    {
        icq=new vbicq4.vbicq4();
        icq.onError+=onICQError;
    }
}
через одно место конечно, но зато работает.
ну и дальше:

список:
Код:
public static List<MyICQ> icqs = new List<MyICQ>();
обработчик ошибки
Код:
    public void onICQError(vbicq4.vbicq4 sender;string errMsg)
    {
        //sender.UIN;
    }
создание объекта
Код:
MyICQ newICQ = new MyICQ();
                newICQ.icq.UIN = uin;
                newICQ.icq.pass = pw;
                newICQ.icq.connect(vbicq4.vbicq4.ICQ_Status.FFC);
                newICQ.onError += onICQError;
                icqs.Add(newICQ);
это лишь для одного события пример.(остальные по аналогии)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.11.2011, 12:20   #8
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

ругается вот на это:

список:
Код:
public static List<MyICQ> icqs = new List<MyICQ>();
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума Ответить с цитированием
Старый 01.11.2011, 12:27   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы класс MyICQ то обьявили выше?
ошибку то привести надо б
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 01.11.2011 в 12:32.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.11.2011, 12:31   #10
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию

Код:
class MyICQ
{
    public delegate void OnErrDelegate(vbicq4.vbicq4 sender, string d);//не помню как верно это все обьявлять
    public OnErrDelegate OnError;

    public vbicq4.vbicq4 icq;
    private void ICQError(string errMsg)
    {
        OnError(icq,errMsg);
    }
    MyICQ()
    {
        icq=new vbicq4.vbicq4();
        icq.onError+=onICQError;
    }
}
я попытался сделать все то, что Вы написали, чтобы проверить работоспособность

Ошибка:

Error 1 Inconsistent accessibility: field type 'System.Collections.Generic.List<Ma inForm.MyICQ>' is less accessible than field 'MainForm.icqs'
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi

Последний раз редактировалось m0dE^; 01.11.2011 в 12:39.
m0dE^ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как уничтожить объект в C# Никки Общие вопросы .NET 7 30.10.2014 23:54
Как обратиться к методу потомку ? [MI_nor] Общие вопросы по Java, Java SE, Kotlin 4 22.03.2011 08:13
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
Как узнать какому классу принадлежит объект? boris-blade Общие вопросы .NET 3 08.04.2010 01:08
Как узнать, создавался ли уже объект класса? TwiX Общие вопросы Delphi 4 06.10.2009 09:44