Clarion 9 Windows Mobile/веб-разработка

Привет у меня 2 вопроса:

В настоящее время я изучаю кларион для проекта, который мне нужно сделать. В настоящее время я изучаю сканеры и кларион как язык для мобильного приложения Windows.

Первая проблема, с которой я столкнулся, касается использования clarion с SDK DLL от сторонних поставщиков, таких как библиотеки DLL сканеров Opticon и обычные библиотеки DLL c#.net, как мне использовать/получать доступ к этим библиотекам DLL в clarion и вызывать их в коде. Я провел довольно много поисков ответов на вышеупомянутые вопросы, но не нашел ничего полезного.

Второй вопрос: Clarion может использовать обычное приложение Clarion для Windows через веб-браузер с брокером приложений и скелетами, предоставленными Clarion, в Clarion 9 я создал приложение, которое делает это, но после создания и запуска приложения в браузере я мгновенно получаю ошибка на главном экране, созданная самогенерирующимся кодом clarions. ошибка «Неперехваченная синтаксическая ошибка: неожиданный идентификатор» из сегмента ниже, в котором отсутствует знак «плюс».

function icAjaxSubmit(controlValue)
{
    getContent(form.action+"? @"+$('#ClarionForm').serialize()+"&"controlValue+"="+$('#'+controlValue).value);
}

Проблема в том, что я не могу найти ничего, относящегося к этому в Интернете, и я не могу найти файл, из которого он сгенерирован, в каталогах clarion и каталогах приложений, его также нет в самом коде проектов, насколько я мог заметить.

Кто-нибудь, кто, возможно, знает что-то о первом вопросе или возможном решении второго вопроса?

Спасибо, Гидеон.


person user3351616    schedule 25.02.2014    source источник


Ответы (2)


Сначала позвольте мне убрать это с дороги. Если вы можете использовать любой другой язык, кроме клариона, сделайте это. Clarion — тупиковая платформа разработки, она не масштабируется под потребности предприятия. Сам по себе Clarion не имеет большого количества встроенных функций, что означает, что вам нужно либо выложить тысячи долларов за сторонние инструменты, либо изучить Windows API, после чего вы также можете выбрать C. Не говоря уже о сторонних инструментах часто. раз теряет поддержку и не будет обновляться для удовлетворения потребностей более поздних версий Clarion.

Однако, если вы решили, что использование Clarion необходимо...

Чтобы ответить на ваш первый вопрос. C# .NET dll не могут вызываться clarion изначально, потому что .NET dll не имеют того же формата, что и стандартные неуправляемые dll Windows. Но вы можете получить к ним доступ с помощью некоторых незначительных модификаций.

В лучшем случае у вас есть доступ к исходному коду DLL C#, и в этом случае вы можете изменить исходный код и реализовать пакет неуправляемого экспорта Робертом Гизеке https://www.nuget.org/packages/UnmanagedExports

с помощью этого пакета вы можете аннотировать определенные функции в вашей библиотеке C# для экспорта в dll, чтобы собственные приложения могли их вызывать.

В худшем случае это сторонние библиотеки C#, для которых у вас нет доступа к исходному коду. Вы можете попробовать следовать этому руководству http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI

Ваша вторая проблема - результат плохого синтаксиса, здесь в коде отсутствует оператор конкатенации.

"&"controlValue

Весь звонок должен быть:

function icAjaxSubmit(controlValue)
{
    getContent(form.action+"?@"+$('#ClarionForm').serialize()+"&" + controlValue+"="+$('#'+controlValue).value);
}
person tt9    schedule 04.12.2014

Clarion на самом деле не является ни одним из вышеперечисленных. Не буду тратить время на объяснение почему. Кто знает почему, тот знает почему. Обратно в реальность.

Успешный вызов внешних библиотек DLL (например, написанных на языках, отличных от Clarion) во многом связан с объявлением PROTOTYPE процедуры/функции, вызываемой во внешней библиотеке DLL. Типичный ПРОТОТИП для внешней функции, которая получает строковый параметр и возвращает его, в Clarion:

Прототип:

(BSTRING),BSTRING,PASCAL,RAW,DLL(ИСТИНА)

Важно создать файл .LIB из DLL с помощью LibMaker.exe, который обычно находится в папке BIN Clarion. Откройте DLL и сохраните .LIB в папке проекта вместе с DLL. Затем добавьте файл .LIB в качестве одного из ресурсов проекта, и когда вы объявляете вызов процедуры/функции в своем приложении Clarion, убедитесь, что «Модуль» указывает на файл «.Lib», который вы включили в свой проект. Вы делаете это, переключая представление с «Процедура» на «Модуль», находя объявленную процедуру и изменяя ее модуль, чтобы он указывал на библиотеку.

После сохранения проекта удалите файл .MAP, связанный с проектом Clarion, повторно откройте, сгенерируйте, запустите make.

Один момент, упомянутый выше, который действительно очень полезен, заключается в использовании библиотеки «Неуправляемый экспорт» в любом коде .NET, который вы можете написать (например, в C#), что позволит вам «упорядочивать» типы данных между вызовами Clarion в . NET-библиотеки классов и возвращают правильные типы данных.

При экспорте процедур/функций Clarion в .NET (или любой другой язык в этом отношении) обязательно обратите особое внимание на «регистр» имени процедуры/функции в вызывающем приложении — оно должно точно совпадать с регистром, т.к. было объявлено в приложении Clarion.

Наконец, не обращайте внимания на комментарий «&» выше — «&» — это не что иное, как эквивалентный конкатенатор «+» в таких языках, как C# или VB.NET, и на него действительно не стоит обращать внимание; Знайте, что вы можете как экспортировать функциональность Clarion в библиотеки DLL, так и использовать внешние библиотеки DLL (.NET или нет) относительно легко -- путем (а) правильного PROTYPE (б) использования BSTRING для представления строк (c ) Используйте библиотеку «UnmanagedEXports» при вызове .NET DLL, (d) обратите внимание на регистр при предоставлении функций Clarion для внешних языков, таких как C# или Delphi.

person Aja    schedule 07.05.2016