在OpenEdge ABL中使用System.Text.RegularExpressions

时间:2013-03-26 11:41:05

标签: progress-4gl

我正在尝试使用业务应用程序中的.NET程序集System.Text.RegularExpressions来减少验证负担。我尝试使用OpenEdge Architect“Assembly References”选项添加程序集,但它拒绝遵守

程序集未存储在windows / assembly(GAC)文件夹中,我可以通过选择Local Assemblies选项卡并导航到Windows \ Microsoft.NET \ assembly \ GAC_MSIL来找到它但是当我尝试添加dll时我得到的以下错误“不是有效的程序集”

我知道程序集没有损坏,因为我在开发C#.NET应用程序时一直使用它我还遇到了this article,它演示了ABL中使用的System.Text.RegularExpressions。如果有人能够提供任何可以使我工作的建议,我将非常感激。

提前致谢

2 个答案:

答案 0 :(得分:0)

可能只是一个很长的镜头,但值得告诉你,有两个问题不是有效的程序集64 bitdynamic serialization

答案 1 :(得分:0)

以下内容出现在今天上午来自Progress的PANS电子邮件中:

http://knowledgebase.progress.com/articles/Article/000039027?popup=true

以下示例显示如何在ABL中使用正则表达式:

 /*
  * IN TESTING, THIS DOESN'T WORK WITH MY INSTALLATION OF VERSION 10.2B RHEL 6,
  * BUT IT DOES WORK WITH VERSION 10.2B WINDOWS INSTALLATION
  *
  * THE ERROR RETURNED ON THE LINUX ENVIRONMENT IS:
  * │Could not find class or interface Regex. (12886)
  */

USING System.Text.RegularExpressions.*. 
DEFINE VARIABLE chaine AS CHARACTER NO-UNDO INIT "test@test.com". 
DEFINE VARIABLE i AS INTEGER NO-UNDO. 
DEFINE VARIABLE regexp AS CLASS Regex NO-UNDO. 

regexp = NEW Regex("^[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+(\.[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+)*@([^\x00-\x1F^\(^\)^\<^\> ^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+(\.[^\x00-\x1F^\(^\)^\<^\>^\@^\,^\;^\:^\\^\~"^\.^\[^\]^\s]+))+$"). 

DO i = 1 TO 100: 
IF regexp:IsMatch(chaine) THEN MESSAGE "OK". 
ELSE MESSAGE "KO" . 
END. 
DELETE OBJECT regexp.

上面的代码示例专门针对Windows。要在UNIX(或Linux)中使用正则表达式,您需要使用该OS的相应库。可以在这里找到一个例子:

http://dbappraise.com/ppt/shlib.pptx