Tips:简便的运用参数替换来减小资源文件
来源:互联网 发布:举出一个云计算的实例 编辑:程序博客网 时间:2024/05/18 00:46
在编译程序时资源文件的大小会对应用程序的大小产生直接影响,合理的将资源文件简便化是一种编程规范。假如,我们有一个过程会产生两种或以上的结果,我们在资源文件中就会编写出两条资源,假如:"您得到的是 结果1" 和 "您得到的是 结果2",如果使用参数替换法,两条资源文件可以压缩成一条,即 "您得到的是 %1",之后我们在程序中进行对 "%1" 的替换,替换成相应结果既可。但是,在 VB 中只有 Replace() 这个函数,它一次只能替换一个参数(可处于多个位置),下面我们对它进行一些完善,是之能满足我们替换多参数的要求。具体的说明函数中已注释。
对函数的引用实例:
Public Function ArgReplace()Function ArgReplace(ByVal Expression As String, _
Argv() As String, Optional ArgFormat As String = "%#", _
Optional ArgLBound As Long = 1) As 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
Argv() As String, Optional ArgFormat As String = "%#", _
Optional ArgLBound As Long = 1) As 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()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 11) As 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
'/*我们假定有一个资源文件,其中的字符串表中有编号 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 11) As 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
- Tips:简便的运用参数替换来减小资源文件
- Tips:加载资源文件的简单方法
- 数据库运用_减小物理日志文件的大小=截断事务日志+收缩事务日志
- 狂删QQ文件减小资源占用
- 使用RSL来减小Flex生成的SWF文件的大小
- 使用RSL来减小Flex生成的SWF文件的大小
- 替换exe文件资源
- 简便的方法来煮素食餐
- 运用spinner和正则表达式pattern来实现文字中表情文字的替换
- 修改log4j配置文件来减小Linux系统tomcat/logs目录下的catalina.out文件的大小
- 时钟资源的使用tips
- 减小SQL SERVER的日志文件
- 如何减小SWF文件的大小
- SQL减小日志文件的命令
- 减小flex文件(swf)的方法
- 如何减小APK文件的大小
- 减小VirtualBox虚拟硬盘文件的大小
- 减小字体文件的大小方案
- blog新开!
- 尝试使用firefox Performancing写blog
- 每日英语
- 英文版Windows XP的中文支持设置
- 三星E728下载游戏全方位解
- Tips:简便的运用参数替换来减小资源文件
- 【转载】城市交通路口无线视频监控系统
- JasperReports在Unix环境下的Weblogic部署问题
- 【原创】Linux计划任务--crontab服务
- DELPHI中的快捷方式一览(完全正式版)
- 定义,公理,定理,命题 的区别[摘录]
- 第一次写Blog
- 希腊字母表[摘录]
- 8086/8088指令系统