转:VC调用vbscript.dll使用其正则表达式库
2010-09-21 17:14
826 查看
最近要实现一个车险特别约定内的值填空,但是又不想录单员随便在特别约定内乱录入,毕竟这是要打印到保单上面的,
所以考虑在在特别约定模板内增加部分文本弹出录入后替换,所以用到了正则表达式.
VC6使用正则表达式的话,有很多选择,最主要我觉得有两种:一种是使用boost的正则表达式库,还要一种是现在介绍的以com的方式调用的vbscript.dll了。
其中,我个人倾向于使用vbscript.dll的正则表达式库,原因:主要是,感觉这么小的功能,没必要动用boost这样的牛刀,杀这样一只蚂蚁也不太合适,所以
还是使用vbscript.dll,而且这个使用这个也有很多优点的,在win平台下,该dll是系统自带的,在system32里面。而且,考虑到一个问题,boost库的正则
表达式似乎与.net里面的有些许区别,而且javascript里面用的正则表达式库也是这个,总而言之,比较熟!
废话有点多,总而言之,用这个好!
进入正题了,首先用vc以资源的方式打开C:\Windows\System32\vbscript.dll,注意以资源的方式打开,默认是auto,那就只是看到一个vbscript.dll了。
选择typelib的第二项,选择导出成RegExp.tlb
然后将RegExp.tlb拷到工程目录下,在stdafx.h里面加一句
#import "RegExp.tlb"
因为要调用com所以在InitInstance里面
if(!AfxOleInit())
AfxMessageBox("Initial Failure");
然后写个函数试一下
UpdateData();
VBScript_RegExp_10::IRegExpPtr pRegExp;
HRESULT hr;
hr = pRegExp.CreateInstance(__uuidof(VBScript_RegExp_10::RegExp));
pRegExp->PutPattern((_bstr_t)(const char *)m_strPattern);/*正则表达式*/
pRegExp->PutGlobal(VARIANT_TRUE);
VBScript_RegExp_10::IMatchCollectionPtr pMC =
pRegExp->Execute((_bstr_t)(const char *)m_strContent);/*要匹配的内容*/
VBScript_RegExp_10::IMatchPtr pM;
CString sTxt;
pRegExp.Release();
发张靓图:
Tag标签: 正则表达式,vc,vbscript.dl,IRegRex
冷侃
关注 - 0
粉丝 - 0
关注博主
所以考虑在在特别约定模板内增加部分文本弹出录入后替换,所以用到了正则表达式.
VC6使用正则表达式的话,有很多选择,最主要我觉得有两种:一种是使用boost的正则表达式库,还要一种是现在介绍的以com的方式调用的vbscript.dll了。
其中,我个人倾向于使用vbscript.dll的正则表达式库,原因:主要是,感觉这么小的功能,没必要动用boost这样的牛刀,杀这样一只蚂蚁也不太合适,所以
还是使用vbscript.dll,而且这个使用这个也有很多优点的,在win平台下,该dll是系统自带的,在system32里面。而且,考虑到一个问题,boost库的正则
表达式似乎与.net里面的有些许区别,而且javascript里面用的正则表达式库也是这个,总而言之,比较熟!
废话有点多,总而言之,用这个好!
进入正题了,首先用vc以资源的方式打开C:\Windows\System32\vbscript.dll,注意以资源的方式打开,默认是auto,那就只是看到一个vbscript.dll了。
选择typelib的第二项,选择导出成RegExp.tlb
然后将RegExp.tlb拷到工程目录下,在stdafx.h里面加一句
#import "RegExp.tlb"
因为要调用com所以在InitInstance里面
if(!AfxOleInit())
AfxMessageBox("Initial Failure");
然后写个函数试一下
UpdateData();
VBScript_RegExp_10::IRegExpPtr pRegExp;
HRESULT hr;
hr = pRegExp.CreateInstance(__uuidof(VBScript_RegExp_10::RegExp));
pRegExp->PutPattern((_bstr_t)(const char *)m_strPattern);/*正则表达式*/
pRegExp->PutGlobal(VARIANT_TRUE);
VBScript_RegExp_10::IMatchCollectionPtr pMC =
pRegExp->Execute((_bstr_t)(const char *)m_strContent);/*要匹配的内容*/
VBScript_RegExp_10::IMatchPtr pM;
CString sTxt;
pRegExp.Release();
发张靓图:
Tag标签: 正则表达式,vc,vbscript.dl,IRegRex
冷侃
关注 - 0
粉丝 - 0
关注博主
相关文章推荐
- VC调用vbscript.dll使用其正则表达式库
- VC调用vbscript.dll使用其正则表达式库
- 使用QT+MinGW编写动态库dll供VC或VB调用
- 关于使用vc++调用matlab生成的dll传递数组的问题
- 使用VC脚本编译本地dll调用
- 使用vc封装纯资源dll及调用
- 关于在VB.NET中调用使用VC++编写的类库dll的一点笔记
- (原创)VB调用DLL(VC)使用结构体参数时的内存对齐及分配的问题.
- C#使用技巧--调用DLL(vc写的dll)
- VC中使用动态链接库DLL:静态调用和动态调用
- 使用QT+MinGW编写动态库dll供VC或VB调用
- VC中使用动态链接库DLL:静态调用和动态调用
- 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)
- 在VC8里调用VBScript.dll的RegularExpression
- Java使用JNI调用VC的DLL的一个小例子
- 关于使用vc++调用matlab生成的dll传递数组的问题
- VC++ .NET 动态加载DLL,使用反射方式Invoke委托调用
- 使用vc2008创建dll(c#调用)
- VS或VC调用matlab程序dll路径配置及错误分析
- 关于使用JAVA调用c 或者c++的DLL的吐槽