|
Вопрос # 1 184/ вопрос открыт / |
|
Здравствуйте!
проблема в следующем:
при попытке вызвать функцию из activex билиотеки написанной на другом языке, возникает ошибка Access Violation.
При вызове функции, просто для проверки, результат возвращается и всё прекрасно работает.
Но когда вызываю функцию которая должна подключится к инету, сразу выскакивает ошибка.
Как избавиться от этой ошибки,
или хотя бы где почитать по этой теме?
 |
Вопрос задал: NN (статус: Посетитель)
Вопрос отправлен: 7 декабря 2007, 14:18
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 8 декабря 2007, 20:53; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 7 декабря 2007, 20:51 [#1]:
значит не стоит вызывать, и не будет ошибок. Вопрос поставлен крайне ужасно. Где название библиотеки, примеры вызова, как отличается вызов от проверочного вызова.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
NN (статус: Посетитель), 7 декабря 2007, 22:51 [#2]:
Извините, просто уже третий раз про это спрашиваю на разных форумах, перерыл кучу статей и ничего не нашёл по делу.
Вот вариант получше:
Библиотека сделана из скрипта perl с помощью PerlCtrl(PDK),
скрипт написан мной.
Нужно вызвать определённую функцию из этой библиотеки, что бы она вернула результат.
С библиотекой всё в порядке так как создал функцию просто для проверки:
sub GETTEXT(){
return "TEXT";
}
добавил к проекту.
FirstControl := ClassName.Create;
form1.edit1.Text := FirstControl.GETTEXT;
в результате чего в Edit появляется текст: TEXT -
то есть всё работает нормально.
Но при попытке вызвать функцию в которой есть работа с сокетами:
Perl:
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
вылетает ошибка Access Violation at address .... in module 'имя проекта'
а при запуске exe-шника AV ... in module 'oleaut32.dll'
OK -> и форма закрывается с ещё одной ошибкой Run Time и цифры.
вот собственно проблема.
|
|
Вадим К (статус: Академик), 8 декабря 2007, 16:57 [#3]:
во первых, вопрос даже сейчас поставлен кособоко.
во вторых. попробуйте для начала не просто строку передавать, а какой-нибуть посложнее пример. например, передать несколько строк, возвратить результат их сложения.
а с сокетами может быть проблема. ведь где гарантия, что PerlCtrl корректно с ними работает? или вы корректно их инициализируете (есть подозрение, что их нужно инициализировать в своей программе).
дальше, далеко не факт, что и перловская библиотека правильно написана и/или может правильно работать в данном контексте.
и на последок. какой сакральный смысл в таком хитром использовании сокетов? не проще ли напрямую вызывать функции?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
NN (статус: Посетитель), 8 декабря 2007, 20:53 [#4]:
попробовал передать две строки.
возвращает результат их сложения, только при закрытии программы ошибка "...
EInvalidPointer with message InvalidPointer of operation ..."
- это из дельфи, а при запуске exe-шника при закрытии программы получаю ошибку Run Time
error.
До создания библиотеки делал просто exe-шник из скрипта(Perl2exe),
функция нормально соединялась с инетом и возвращала результат.
Да, может быть дело в PerlCtrl - только вот вопрос - как это по другому проверить???
Смысл в том что я учу Perl, и решил работать с текстом на Perl-e, - да и удобнее мне на
perl-e, вот вторых хотел вообще не трогать Delphi, но при создании exe-шника с помощью
perl2exe + Perl::Tk - GUI -
- но размер файла получается беспредельный.
спасибо за внимание, буду разбираться дальше.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|