Tips:简便的运用参数替换来减小资源文件

在编译程序时资源文件的大小会对应用程序的大小产生直接影响,合理的将资源文件简便化是一种编程规范。假如,我们有一个过程会产生两种或以上的结果,我们在资源文件中就会编写出两条资源, 假如:"您得到的是 结果1" 和 "您得到的是 结果2",如果使用参数替换法,两条资源文件可以压缩成一条,即 "您得到的是 %1",之后我们在程序中进行对 "%1" 的替换,替换成相应结果既可。但是,在 VB 中只有 Replace() 这个函数,它一次只能替换一个参数(可处于多个位置),下面我们对它进行一些完善,是之能满足我们替换多参数的要求。具体的说明函数中已注释。
Public  Function ArgReplace(ByVal Expression As String, _
Argv() 
As StringOptional ArgFormat As String = "%#"
, _
Optional ArgLBound As Long = 1As String


'/*ArgFormat 参数表示一种参数格式,"#"代表数字通配符,默认格式为 %1 %2...
'
ArgLBound 参数表示输入数组的最低边界,也是"#"所代表通配符的最底限,函数
'
运行错误则返回原表达式,否则则返回替换后的表达式*/

    ArgReplace 
= Expression
    
On Error GoTo
 ErrExit
    
Dim j As Long, sExpression As String

    sExpression 
= Expression
    
If LBound(Argv()) >= ArgLBound Then

        
'/*这里要说明一点,在替换通配符"#"和替换参数标识时需要按照
        '从大到小的顺序替换,否则可能出现错误,例如: 我们有一个需要
        '进行参数替换的表达式 "%1 %12",如果按照从大到小的顺序替换
        '后应为 "参数1 参数12",但如果按照从小到大的顺序,则 "%1" 会
        '被先替换为参数1,而后表达式中已经不存在 "%12",函数终止,其得
        '到的结果会是 "参数1 参数1 2"(参数1和字符2中间没有空格,这里
        '写成这样是为了容易区分)*/
        For j = UBound(Argv()) To LBound(Argv()) Step -1
            ArgReplace 
= Replace$(sExpression, Replace$(ArgFormat, _
            
"#"CStr
(j)), Argv(j))
            sExpression 
=
 ArgReplace
        
Next

    
End If
ErrExit:

End Function
对函数的引用实例:
Sub Main()
    
'/*我们假定有一个资源文件,其中的字符串表中有编号 1001 到 1011 的资源,

    '且其内容为: 1001 CW 1002  1003 L 1004 o 1005 v 1006 e 1007  1008 W
    '1009 Y 1010 C 1011 !,并且有 1000 为 %1%2%3%4%5%6%7%8%9%10%11*/
    Dim ArrArg(1 To 11As String, i As Integer
    
For i = 1 To 11
        ArrArg(i) 
= LoadResString(1000 + i)
    
Next

    
MsgBox ArgReplace(LoadResString(1000), ArrArg()), vbInformation, "LoVE"
    
'//其运行结果为 "CW Love WYC!"
End Sub
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值