Конференция "Corba" » Ошибка при подключении dll написанной на delphi к веб-сервису asp [Delphi]
 
  • two_2003 © (29.05.07 14:22) [0]
    При выполнении данного кода выскакивает исключение EOleSysError.
    Может мы подключаем dll неправильно, а может в dll что то не так(отдельно dll подключали в delphi и тестили - все работает)

    код в dll
    library ole;
    uses
    SysUtils,
    ComObj,
    OleCtrls,
    ActiveX;
    {$R *.res}
    function GetPoint(xy: Integer): integer; stdcall;
    var
    ...
    begin
    ....
    try
    CoInitialize(nil);
    except
    result:=-5; exit; end;

    try
    Appl:=GetActiveOleObject('AMap3.Application');
    except
    on EOleCtrlError do
    begin result:=- 61; exit; end;
    on EOleException do
    begin result:=-63; exit; end;
    on EOleRegistrationError do
    begin result:=-64; exit; end;
    on EOleSysError do
    begin result:=-65; exit; end;
    on EOleError do
    begin result:=-62; exit; end;
    ....
    try
    CoUnInitialize;
    except result:=-23; exit; end;
    end;

    exports
    GetPoint;

    begin
    end.

    код в веб-сервисе
    ...
    public class MapPoint
    {
    [DllImport("C:/Inetpub/wwwroot/WebSite_L-ju/App_Data/ole.dll")]
    public static extern int GetPoint(int xy);
    }
    ...
    int x = MapPoint.GetPoint(1);
    ...
  • umbra © (29.05.07 14:42) [1]
    если
    uses ..., ComObj, ....


    то

    > CoInitialize(nil);


    и


    > CoUnInitialize;


    не надо, если не происходит в отдельном потоке
  • Сергей М. © (29.05.07 16:09) [2]

    > umbra ©   (29.05.07 14:42) [1]



    > не надо, если не происходит в отдельном потоке


    Для библиотеки надо.
  • umbra © (29.05.07 16:56) [3]
    если не секрет, то почему? веди при инициализации ComObj это уже делается?
  • umbra © (29.05.07 17:48) [4]
    был неправ. в библиотеке СОМ не инициализируется.
  • umbra © (29.05.07 17:56) [5]

    > try
    > CoInitialize(nil);
    > except
    > result:=-5; exit; end;
    >

    исключение не произойдет никогда. АПИ не возбуждают исключений.
  • two_2003 © (29.05.07 19:49) [6]
    то есть вы говорите может быть косяк в инициализации com?
  • two_2003 © (29.05.07 19:51) [7]
    >>>если не секрет, то почему? веди при инициализации ComObj это уже делается?
    Да делается но если не делать то он просит com инициализировать если подключать dll, а если не через dll делать то можно без com инициализации обойтись
  • umbra © (29.05.07 20:21) [8]

    > то есть вы говорите может быть косяк в инициализации com?
    >
    >

    может :) Но  EOleSysError обычно еще сопровождается поясняющим текстом. Неплохо бы его увидеть, чтобы говорить что-нибудь определенное.
  • two_2003 © (29.05.07 20:28) [9]
    dll запускается через .net и никакого дополнительного текста нет
    а если запустить dll через delphi то все работает нормально
  • umbra © (29.05.07 20:33) [10]

    > никакого дополнительного текста нет

    так сделайте, чтоб был :) При обработке исключений пишите их сообщения в текстовый файл. Так можно выяснить, в чем проблема.
  • two_2003 © (29.05.07 21:04) [11]

    > так сделайте, чтоб был :) При обработке исключений пишите
    > их сообщения в текстовый файл. Так можно выяснить, в чем
    > проблема.

    dll не создает файл какая то ошибка
    как быть не знаю
    читать из файла читает но не создает
  • Сергей М. © (30.05.07 08:30) [12]

    > two_2003 ©   (29.05.07 21:04) [11]



    > какая то ошибка


    Встроенный в Делфи отладчик тебе на что дан ?
  • имя (21.01.08 09:44) [13]
    Удалено модератором
  • имя (24.05.08 18:37) [14]
    Удалено модератором
  • имя (24.05.08 18:38) [15]
    Удалено модератором
 
Конференция "Corba" » Ошибка при подключении dll написанной на delphi к веб-сервису asp [Delphi]
Есть новые Нет новых   [134430   +4][b:0][p:0.001]