с использованием System.Text.RegularExpressions в OpenEdge ABL

Я пытаюсь использовать сборку .NET System.Text.RegularExpressions в наших бизнес-приложениях, чтобы упростить проверку. Я попытался добавить сборку с помощью параметра «Ссылки на сборку» OpenEdge Architect, но он отказывается выполнять

Сборка не хранится в папке windows / assembly (GAC), я могу найти ее, выбрав вкладку Local Assemblies и перейдя в Windows \ Microsoft.NET \ assembly \ GAC_MSIL, однако, когда я пытаюсь добавить dll, я получаю следующую ошибку «Недействительная сборка»

Я знаю, что сборка не повреждена, потому что я использовал ее при разработке приложений C # .NET. Я также встречал эта статья, в которой демонстрируются выражения System.Text.RegularExpressions, используемые в ABL. Если кто-нибудь может предложить какие-либо предложения, которые позволят мне заставить эту работу работать, я был бы чрезвычайно благодарен.

заранее спасибо


person Gary Green    schedule 26.03.2013    source источник


Ответы (2)


Вероятно, это всего лишь попытка, но стоит рассказать вам об этом, две проблемы с недействительной сборкой 64-разрядная версия или динамическая сериализация.

person pedromarce    schedule 26.03.2013

В утреннем электронном письме PANS от Progress появилось следующее:

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 "[email protected]". 
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), вам необходимо работать с соответствующими библиотеками для этой ОС. Пример можно найти здесь:

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

person Tom Bascom    schedule 26.03.2013
comment
Ой, я вижу, это та же статья, на которую вы ссылались. Прости. Так что же не работает? - person Tom Bascom; 26.03.2013
comment
Проблема, с которой я столкнулся, заключается в том, чтобы включить сборку для обеспечения доступа к пространству имен .NET. Когда я пытаюсь добавить сборку через OE Architect, я получаю сообщение Not a valid assembly. - person Gary Green; 27.03.2013
comment
Я бы не подумал, что вам вообще нужно что-то делать, чтобы добавить сборку. Похоже, он уже должен быть там. Может ты где-то напортачил? - person Tom Bascom; 28.03.2013