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

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

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

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

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

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

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

Любой, кто, возможно, знает что-то относительно первого вопроса или возможного решения второго вопроса?

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

2 ответа

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

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

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

В лучшем случае, у вас есть доступ к исходному коду для C# dll. В этом случае вы можете изменить исходный код и реализовать пакет неуправляемого экспорта Роберта Гизеке 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);
}

Clarion на самом деле ничего из вышеперечисленного. Я не буду тратить время на объяснение причин. Те, кто знает почему, знают почему. Обратно в реальность.

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

Прототип:

(Подстрока), Подстрока,PASCAL,RAW,DLL(TRUE)

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

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

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

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

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

Другие вопросы по тегам