Доступ к COM-методам из Foxpro - PullRequest
       24

Доступ к COM-методам из Foxpro

1 голос
/ 11 августа 2011

Моя компания пытается использовать сторонний генератор PDF из VFoxpro 9.0. Они предоставили нам файл .dll COM и документацию по методам, но они не поддерживают Foxpro, поэтому они не могут помочь с этим.

Я зарегистрировал DLL и загрузил COM, и это удалось - после того, как я создаюобъект (), intellisense предложит мне список методов, поэтому я знаю, что он импортирует их правильно. Но когда я пытаюсь вызвать любой из методов, я получаю всплывающее окно, которое просто говорит «синтаксическая ошибка», что очень мало помогает. Я попытался вызвать один метод, который не принимает аргументов, в случае, если проблема заключалась в передаче соглашений, но тот также возвращает «синтаксическую ошибку». Есть ли что-то еще, что мне нужно сделать, кроме создания объекта и использования его для вызовов методов?

Я на самом деле не парень из foxpro, но я пробовал то же самое, используя разные COM, такие как Excel.Application, и они работают так, как я ожидал. Есть ли какая-либо причина, по которой COM может быть несовместим с Foxpro или требовать каких-то других манипуляций, чтобы заставить его работать?

Большое спасибо за любые предложения.


ОК, через полтора дня я обнаружил проблему.

Я набирал a=createobject("library.class"), а затем = a.method(), и он возвращал «синтаксическую ошибку». Оказывается, если я вызову переменную что-нибудь, кроме a, это сработает! Похоже, что в foxpro есть какая-то ошибка, поэтому она не обрабатывается правильно, когда имя переменной a. Если я использую b, x, anotherName или что-то еще, это работает. Если я наберу ?a, это подтвердит, что a - это (object), и, как я сказал, intellisense распознает все имена и типы методов. Я не могу дождаться, чтобы вернуться в Яву.

Так что, спасибо, другие ответы не нужны, но я оставлю это на всякий случай, если это поможет другой бедной душе.

1 Ответ

0 голосов
/ 02 ноября 2011

См. Ответ, который я набрал выше - переменные нельзя назвать «а». Извините за то, что не указали его в качестве ответа, чтобы его можно было закрыть.

...