.NET COM компонент vs Deplhi
От: AlexeyP10  
Дата: 04.08.03 06:47
Оценка:
Написал такой незамысловатый компонент C# COM:


namespace COMTest
{
    [ComVisible(false)]
    public delegate void OnTestEvent();

    public interface If1 {
        string Name2 { get; set; }
        void Test();
    }

    [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
    public interface _If1Events {
        void OnTest();
    }

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    [ClassInterface(ClassInterfaceType.None)
    ,ComSourceInterfacesAttribute(typeof(_If1Events))]
    public class Class1 : If1
    {
        public event OnTestEvent OnTest;

        public Class1()
        {
        }

        public string Name2 {
            get { return "Vasia"; }
            set { }
        }

        public void Test() {
            OnTest();
        }
    }
}


Тестирую в VB — событие OnTest замечательно запускается. Пытаюсь прикрутить к Delphi.
Делаю Import TypeLib, затем правлю немного mscorlib (типы). Компонент замечательно создается, Name2 работает. Ставлю обработчик на событие. При вызове Test возникает OleException с сообщением "not implemented". А кто не реализован — непонятно совсем. Может кто сталкивался с такими граблями, вроде все путем делаю.
Re: .NET COM компонент vs Deplhi
От: BalTun Россия  
Дата: 04.08.03 12:49
Оценка:
Попробуй Tools->Debbuger Options->Language Exceptions->Stop On Delphi Exceptions убрать галочку.
А вдруг поможет!
С уважением,
Илья Колесников
Re: .NET COM компонент vs Deplhi
От: AlexeyP10  
Дата: 04.08.03 13:27
Оценка:
Хочется отметить, что при соединении "рукми" — все работает отлично:

    Cf1 := CreateOleObject('COMTest.Class1') as If1;

    EventSink := TEventSink.Create as _If1Events;

    Container := Cf1 as IConnectionPointContainer;
    OleCheck(Container.FindConnectionPoint(_If1Events, ConnectionPoint));
    OleCheck(ConnectionPoint.Advise(EventSink, Cookie));

    Cf1.Test;

    ConnectionPoint.UnAdvise(Cookie);

    Cf1 := nil;



TEventSink.OnTest — вызывается токо в путь.
Re[2]: .NET COM компонент vs Deplhi
От: AlexeyP10  
Дата: 04.08.03 13:32
Оценка:
Здравствуйте, BalTun, Вы писали:

BT>Попробуй Tools->Debbuger Options->Language Exceptions->Stop On Delphi Exceptions убрать галочку.

BT>А вдруг поможет!

Уже сделано, даже почти в первую очередь, понятней не стало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.