首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clarion 9 Windows移动/Web开发

Clarion 9 Windows移动/Web开发
EN

Stack Overflow用户
提问于 2014-02-25 22:28:52
回答 2查看 1.4K关注 0票数 1

嗨,我有两个问题:

我目前正在为我需要做的一个项目学习clarion。目前,我正在考虑将scanner和clarion作为windows mobile应用程序的语言。

我遇到的第一个问题是关于clarion与第三方供应商提供的SDK的使用,例如Opticon扫描仪DLL和普通c#.net DLL,我如何在clarion中使用/访问这些DLL并在代码中调用它们。我已经做了相当多的搜索关于上述问题的答案,但找不到任何非常有用的东西。

第二个问题: Clarion可以通过clarion提供的应用程序代理和框架,通过web浏览器为windows应用程序使用普通clarion,在clarion 9中我创建了一个这样做的应用程序,但在浏览器中创建和运行该应用程序后,我立即在由clarions自生成代码创建的主屏幕上收到错误。错误是下面缺少加号的段中的“未捕获syntaxError:意外标识符”。

代码语言:javascript
复制
function icAjaxSubmit(controlValue)
{
    getContent(form.action+"? @"+$('#ClarionForm').serialize()+"&"controlValue+"="+$('#'+controlValue).value);
}

问题是我在互联网上找不到任何与此相关的东西,也找不到从clarion目录和应用程序目录中生成的文件,它也不在我可以注意到的项目代码本身中。

有谁可能知道关于第一个问题或第二个问题的可能解决方案?

感谢吉迪恩

EN

回答 2

Stack Overflow用户

发布于 2014-12-05 04:00:01

首先,让我把这个去掉。如果你可以使用除了clarion之外的任何其他语言,那就去做吧。Clarion是一个死胡同的开发平台,它不能扩展以满足企业的需求。Clarion本身缺乏很多内置功能,这意味着你要么需要花几千美元购买第三方工具,要么学习Windows API,在这一点上你也可以选择C。更不用说第三方工具经常失去支持,也不会升级到满足Clarion后续版本的需求。

但是,如果您认为有必要使用Clarion ...

来回答你的第一个问题。C# .NET dlls无法由clarion本机调用,因为.NET dlls与标准windows非托管dlls的格式不同。但是你可以通过一些小的修改来访问它们。

最好的情况是,您可以访问C# dll的源代码,在这种情况下,您可以修改源代码并实现Robert Giesecke https://www.nuget.org/packages/UnmanagedExports的非托管导出包。

使用这个包,您可以在C#库中注释要在dll中导出的特定函数,以便本机应用程序可以调用它们。

最坏的情况是您无法访问源代码的第三方C# dlls。您可以尝试遵循此指南http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI

您的第二个问题是由于语法错误造成的,此处的代码中缺少连接运算符

"&"controlValue

整个调用应该是:

代码语言:javascript
复制
function icAjaxSubmit(controlValue)
{
    getContent(form.action+"?@"+$('#ClarionForm').serialize()+"&" + controlValue+"="+$('#'+controlValue).value);
}
票数 2
EN

Stack Overflow用户

发布于 2016-05-07 17:22:14

Clarion实际上不是上面的任何一个。我不会浪费时间来解释为什么。知道为什么的人就知道为什么。回到现实。

成功调用外部DLL (例如,用Clarion以外的语言编写的那些)与在外部DLL中调用的过程/函数的原型声明有很大关系。在Clarion中,接收字符串参数并返回1的外部函数的典型原型是:

原型:

( BSTRING )、BSTRING、PASCAL、RAW、DLL(TRUE)

重要的是使用LibMaker.exe从DLL创建一个.LIB文件,通常位于Clarion的BIN文件夹中。打开DLL,并将.LIB与DLL一起保存到项目文件夹中。然后添加.LIB文件作为项目的资源之一,当您在Clarion应用程序中声明过程/函数调用时,请确保“模块”指向项目中包含的".Lib“文件。为此,您可以将视图从" procedure“切换到" module ",找到已声明的过程,并将其模块更改为指向Lib。

保存项目后,继续删除与Clarion项目关联的.MAP文件,重新打开,生成,运行。

上面提到的一点非常非常有用,那就是在您可能编写的任何.NET代码中(例如在C#中)使用“非托管导出”库,这将允许您在对.NET类库的Clarion调用之间“编组”数据类型,并返回正确的数据类型。

在将Clarion过程/函数导出为.NET (或任何其他语言)时,一定要特别注意调用应用程序中过程/函数名称的“大小写”--它必须与Clarion应用程序中声明的大小写完全匹配。

最后,不要被上面的"&“注释划过-- "&”只不过是C#或VB.NET等语言中等效的"+“连接符,真的不值得关注;要知道,你可以在DLL中导出Clarion功能,或者使用外部DLL (.NET或不),相对容易--通过(a)正确地原型(b)使用BSTRING来表示字符串(c)在调用UnmanagedEXports DLL时使用”.NET“库,(d)在使Clarion功能可用于外部语言时--如C#或Delphi.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22017138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档