Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 184

/ вопрос открыт /

Здравствуйте!

проблема в следующем:

при попытке вызвать функцию из activex билиотеки написанной на другом языке, возникает ошибка Access Violation.

При вызове функции, просто для проверки, результат возвращается и всё прекрасно работает.

Но когда вызываю функцию которая должна подключится к инету, сразу выскакивает ошибка.

Как избавиться от этой ошибки,
или хотя бы где почитать по этой теме?

NN Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: NN (статус: Посетитель)
Вопрос отправлен: 7 декабря 2007, 14:18
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 8 декабря 2007, 20:53; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 7 декабря 2007, 20:51 [#1]:

значит не стоит вызывать, и не будет ошибок. Вопрос поставлен крайне ужасно. Где название библиотеки, примеры вызова, как отличается вызов от проверочного вызова.
Галочка "подтверждения прочтения" - вселенское зло.
NN

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

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 -
- но размер файла получается беспредельный.

спасибо за внимание, буду разбираться дальше.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.