2014-02-25 51 views
1

嗨我有2個問題:Clarion 9 Windows移動/網絡開發

我目前正在學習一個項目,我需要做的clarion。目前我正在研究掃描儀和clarion作爲Windows移動應用程序的語言。

我的第一個問題是關於使用來自第三方供應商的SDK DLL的clarion,如Opticon掃描器DLL和正常的c#.net DLLS,我該如何在clarion中使用/訪問這些DLL並將它們調用碼。我已經做了相當多的搜索有關上述提到的答案,但無法找到任何可用的東西。

第二個問題:Clarion可以通過帶有clarion提供的應用程序代理和框架的web瀏覽器使用正常的clarion for windows應用程序,在clarion 9中,我創建了一個應用程序,但在創建並運行應用程序瀏覽器,我立即收到一個錯誤的主屏幕上創建的自動生成代碼。從下面的段中缺少加號的錯誤是「Uncaught syntaxError:unexpected Identifier」。

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

的問題是我無法找到任何有關這在互聯網上也可以找到,這是在嘹亮的目錄和應用程序目錄中生成的文件,也沒有在項目代碼自我從我能注意。

任何一個可能知道第一個問題或第二個問題的可能解決方案?

感謝 基甸

回答

2

首先讓我得到了這一點的方式。如果你可以使用除了clarion之外的任何其他語言,那就去做吧。 Clarion是一個死衚衕的開發平臺,它不能滿足企業的需求。 Clarion本身缺乏很多內置功能,這意味着您需要爲第三方工具提供數千美元的費用,或者學習Windows API,在此時您可能會選擇C。更不用說第三方工具了多次失去支持,並且不會升級以滿足Clarion後續版本的需求。

但是,如果你決定,使用號角是必要的......

要回答你的第一個問題。 C#.NET dll,本身不能用clarion調用,因爲.NET dll與標準的Windows非託管dll格式不同。但是你可以通過一些小修改來訪問它們。

最好的情況下,您可以訪問對C#的dll的源代碼在這種情況下,你可以修改源代碼,並使用該包裝由羅伯特·捷https://www.nuget.org/packages/UnmanagedExports

實現的非託管出口包,你可以標註具體功能在您的C#庫中導出到dll中,以便本機應用程序可以調用它們。

最糟糕的情況是這些是您無法訪問源代碼的第三方C#dll。您可以嘗試按照本指南http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL-Export-without-C-CLI

你的第二個問題是語法錯誤的結果,你缺少在這裏

"&"controlValue

代碼連接運算符整個調用應該是:

function icAjaxSubmit(controlValue) 
{ 
    getContent(form.action+"[email protected]"+$('#ClarionForm').serialize()+"&" + controlValue+"="+$('#'+controlValue).value); 
} 
2

號角實際上不是上述情況。我不會浪費時間來解釋爲什麼。那些知道爲什麼,知道爲什麼。回到現實。

成功調用外部DLL(例如用Clarion以外的語言編寫的DLL)與外部DLL中調用的過程/函數的PROTOTYPE聲明有很大關係。用於接收一個字符串參數,並且返回一個,在號角外部函數,一個典型的原型爲:

原型:

(BSTRING),BSTRING,PASCAL,RAW,DLL(TRUE)

重要的是使用通常在Clarion的BIN文件夾中找到的LibMaker.exe從DLL中創建.LIB文件。打開DLL,並將.LIB與DLL一起保存到項目文件夾中。然後將.LIB文件添加爲項目資源之一,並且當您在Clarion應用程序中聲明過程/函數調用時,請確保「模塊」指向您包含在項目中的「.Lib」文件。您可以通過將視圖從「過程」切換到「模塊」,找到您的聲明過程並將其模塊更改爲指向庫來執行此操作。

保存您的項目後,繼續刪除與Clarion項目關聯的.MAP文件,重新打開,生成,使運行。

上面提到的一點是非常有用的,就是在您可能編寫的任何.NET代碼中(例如在C#中)使用「Un-managed Exports」庫,這將允許您使用「Marshall」數據類型Clarion調用.NET類庫,並返回正確的數據類型。

將Clarion程序/函數導出到.NET(或任何其他語言)時,請務必特別注意調用應用程序中過程/函數名稱的「大小寫」 - 它必須與在Clarion應用程序中聲明的確切情況。

最後,不要被上面的「&」註釋所誤解 - 「&」只不過是C#或VB.NET等語言中等效的「+」連接符,並且真的不值得關注上;知道你可以,都可以相對容易地導出DLL中的Clarion功能,或者使用exernal DLL(.NET或不),通過(a)PROTYPE正確(b)使用BSTRING來表示字符串(c)使用「UnmanagedExports 「庫調用.NET DLL時,(d)注意使Clarion功能可用於外部語言(如C#或Delphi)的情況。