从Clipper中的C#调用函数
我的一个朋友有一个内置于Clipper的应用程序。现在他想在他的应用程序中添加一些新功能,但他不知道如何为其编码。我可以在.net的控制台应用程序中完成他的要求。因此,我在C#中编写了如下函数: 我在main方法的构造函数中调用这个函数。我的程序运行良好从Clipper中的C#调用函数,c#,clipper,C#,Clipper,我的一个朋友有一个内置于Clipper的应用程序。现在他想在他的应用程序中添加一些新功能,但他不知道如何为其编码。我可以在.net的控制台应用程序中完成他的要求。因此,我在C#中编写了如下函数: 我在main方法的构造函数中调用这个函数。我的程序运行良好 现在,他想从Clipper开发的应用程序中调用这个函数。有人知道如何在C#app和Clipper app之间进行通信吗?如果你想从Clipper本地调用C#例程,那你就倒霉了 另一种方法可能是在中重新编码Clipper应用程序。Vulcan是X
现在,他想从Clipper开发的应用程序中调用这个函数。有人知道如何在C#app和Clipper app之间进行通信吗?如果你想从Clipper本地调用C#例程,那你就倒霉了 另一种方法可能是在中重新编码Clipper应用程序。Vulcan是XBase的.NET本机开发环境 否则,可能会有其他技术,但需要更多的细节:例如,您的同事是否正在使用Clipper 5或Harbor等。从Clipper方面获得更多的资源,说明需要什么将是有帮助的。1º第一步 我在C#中创建了一个类库,并编译了选项,将Register标记为COM互操作 2º类样本 公共阶级秩序
Public Function Total() As Decimal
Return 100
End Function
Public Property Description As String = "Teste"
末级
港内3度测试
//现在可以在类中使用方法e属性了
包括“minigui.ch”
函数Main()
本地订单
//HarbourInvoke the name of my Class Library in C#
oOrder = CreateObject("HarbourInvoke.Order")
MsgInfo(oOrder:Total())
MsgInfo(oOrder:Description())
oOrder:Description := "new test"
MsgInfo(oOrder:Description())
oSuma := nil
Return Nil他的应用程序的源代码大小是否如此之大?将Clipper应用程序迁移到C#难道没有意义吗?我不知道现在有什么理由使用Clipper而不是C#,除非它是一个大型的遗留应用程序,或者它有更大的客户群,并且担心变化的影响。免责声明:我将一个大型应用程序从Clipper迁移到了C。这是非常值得的努力。是的,应用程序是巨大的。另外,我的朋友不知道C#,因此他无法对应用程序进行新的更改。你不能从clipper调用C#代码,但应该有一种方法运行另一个exe文件,通过clipper传递参数(甚至使用IPC)(询问你的朋友)。例如(不考虑任何安全性),Clipper exe文件可以使用命令行参数执行.net exe文件。或者,您可以使用预定义文件传递参数和/或返回结果等。这取决于您使用的特定供应商变量,例如XBase支持与.Net的COM互操作。你在用什么样的Clipper实现?他不能。但如果他可以运行.NETEXE文件,那么他就可以传递参数(请参阅如何读取参数)。这只是一种方式。另一种易于编程的方法是在文件上进行协商(或作为命令行参数传递),该文件包含输入参数(文本、二进制或序列化形式:xml、ini等)和/或输出文件以返回结果(如果需要)。性能方面最好的方法是IPC:运行.net exe,使用IPC共享导致c#代码执行的内容,获取数据。问题是:克利伯在IPC的表现如何?
//HarbourInvoke the name of my Class Library in C#
oOrder = CreateObject("HarbourInvoke.Order")
MsgInfo(oOrder:Total())
MsgInfo(oOrder:Description())
oOrder:Description := "new test"
MsgInfo(oOrder:Description())
oSuma := nil