При выполнении данного кода выскакивает исключение 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);
...
Для: two_2003
а если попробовать так (не уверен, но все-таки):
[DllImport("C:/Inetpub/wwwroot/WebSite_L-ju/App_Data/ole.dll", CallingConvention = CallingConvention.StdCall)]
?
а точно на той машине зарегестрирован компонент в системе?
пробовали не помогает
а на счет того что объект зарегестрирован да он зарегистрирован, сам лично в реестре копался
Для: two_2003
хм ... ошибку полностью прочитать удалось?
что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит
А активный объект AMap3.Application точно есть в тот момент когда Вы к нему обращаетесь ?
Да есть, и он даже зарегистрирован в системе,
Вот проверка
on EOleRegistrationError do
begin
result:=-64;
exit;
end;
Эта ошибка не выскакивает.
Еще предложения....
А по поводу вопроса <<что это за AMap3? к тому что - может он чегото хитрого требует, еще каких длл-ек или ... а в системе их нет или как вариант не находит>> скажу следующее, для этого объекта все есть, при подключении dll в delphi все же работает, а в .net не хочет, вот не знаю даж что и делать.
Вообще-то .. я не то имел ввиду ..
EOleSysError - вывалиться при вызове GetActiveOleObject если на текущий момент нет запущенного(активного) объекта AMap3.Application ...
А какое дополнительное сообщение приходит в EOleSysError ?
никакого сообщения не выводит, если убрать on EOleSysError do то ничего не происходит далее код
Ошибка даже происходит если использовать Appl:=CreateOleObject('AMap3.Application');
пробуйте прочитать так
SysErrorMessage(GetLastError);
Т.е. из обычного Дельфийского или СиШарпного приложения вызывается нормально .. а из веб сервиса нет?
И хотелось бы всё таки увидеть что в сообщении в ошибке....
Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)