MapInfo OLE

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

MapInfo OLE

Сообщение HASPer » 08.09.2009 18:34:29

Ситуация такая, в программу встраивается карта MapInfo через OLE, в Delphi код компилируется без проблем, а вот с Lazarus проблема:

MI.Do('какая нибудь команда MapBasic, неважно');

Fatal: Syntax error, "identifier" expected but "DO" found

Переменная MI типа Variant, соединение с MapInfo происходит.
Через метод Do отправляются в MapInfo команды, есть другой метод Eval, если нужен ответ от MapInfo, он работает.
А метод Do при компиляции определяется как родной FPC и возникает ошибка.

Как можно это обойти?
HASPer
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.09.2009 17:49:40

Re: MapInfo OLE

Сообщение Павел Ишенин » 09.09.2009 02:26:53

написать о проблеме в bug tracker проекта fpc
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: MapInfo OLE

Сообщение HASPer » 17.09.2009 07:44:23

Может кому нибудь пригодится решение данной проблемы, хоть и кривым путем.
Написал я об этой проблеме в bug tracker проекта fpc, и получил очень не радостный ответ о том что бы профиксить эту проблему, FPC придется перелапачивать целиком, т.е. решение поблемы не стоит.

Так вот как я решил поступить:

Procedure MB(V:Variant;S:WideString);
Begin
V.ZZ(S);
End;

Процедура предназначенная для выполнения комманды MapBasic - S, в MapInfo - V. ZZ это на самом деле DO, но для удачной компиляции написал пока что так, в программе везде заменил V.DO('Чего нибудь') на MB(V,'Чего нибудь'). После удачного получения .EXE файла, я взял FAR и просто по F4 нашел в .EXE - ZZ, там рядом куча строковых констант, и заменил на DO.

И все работает нормально.

Можно в принципе и DLL'ку сделать на будущее.
HASPer
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.09.2009 17:49:40


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

Рейтинг@Mail.ru