当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP 三层架构 Convert类实现代码

ASP
嵌入式Web视频点播系统实现方法
GB与BIG5内码转换COM原代码
金额阿拉伯数字转换为中文的存储过程
利用 WSH 作定时工作流程
用InstallShield 进行 ASP 软件的打包和自动安装
服务器获得客户端时间的方法
关于如何读出图片的高度与长度的总结
按下回车键指向下一个位置的一个函数
一个不错的随机函数
一套加解密字符串的函数
一段加密函数(base64)
一段加密函数
使用asp实现支持附件的邮件系统(三)
使用asp实现支持附件的邮件系统(二)
使用asp实现支持附件的邮件系统(一)
检查当前目录下是否存在指定的文件,如果存在就重新命名
MD5加密的javascript实现例子
如何在服务器端调用winzip命令行对上传的多个文件打包压缩
MD5不可逆加密算法的ASP实现实例
看人家用使用InstallShield制作ASP安装程序(6)

ASP 三层架构 Convert类实现代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 48 ::
收藏到网摘: n/a

第二个重要的类,作用是类型转换,类名Con_Convert.在页面代码的开头实例化,对象名为Convert,借用了.net的类型转换的对象名称. 这个类主要解决在类型转换时,如果直接使用类型转换函数,会因为变量为空或者格式不对而导致程序报错,而这种报错在大多数情况下是允许的.例如要转换一个字符串变量为数字,如果变量为空,则一般需要自动返回0.
另外一个重要功能就是封装变量格式化操作,可以保持整个网站的输出格式统一,例如时间格式,货币格式等等. 日期和货币格式化的时候,极易遇到因空值报错的情况,一般都不得不写个预判断空值的逻辑,再格式化变量. 使用这个类负责类型转换和格式化输出后,就不用操心这些琐碎的细节了,可以让编程的心情得到大大改善啊.
还有些其他格式化功能,也加了进去,例如Convert.ToPer()是用来转换数字成百分数,Convert.FirstUppercase()用来做首字母大写...... 你可以根据自己的需要,随时扩展这个类,不要忘记了和大家分享哦.
有些基本的函数,如果随便写一写,基本可以凑合着用,但是遇到特殊情况,就要重新改写.比如我写的Convert.ToInt()方法,将变量转换为Integer. 最基本的操作,是判断一下是否为空,不为空就直接用Cint()就可以了. 但是遇到变量超出了范围,又得判断是否在Integer范围内,所以又写了一个私有方法IsOverflowInteger(),用于判断变量值是否为某一个范围内的数字.经过这样的处理,相信基本可以处理所有的情况了.
所以我想,Convert类中的已有方法还是会有不少需要改善的,大家如果有更好更完善的函数请发上来分享,让它形成ASP中最标准的变量处理的类,再不用依赖ASP中那些有限的功能了.
如下列举一些比较主要的方法,具体细节请看代码.
类型判断:
Convert.IsInteger(ByVal Value) 判断是否整数,只允许0~9和-号
Convert.IsInt(ByVal Value) 判断是否int型,其下类似,不用解释了.
Convert.IsLng(ByVal Value)
Convert.IsDecimal(ByVal Value)
Convert.IsSng(ByVal Value)
Convert.IsDbl(ByVal Value)
Convert.IsCur(ByVal Value)
Convert.IsBln(ByVal Value)
Convert.IsDat(ByVal Value)
Convert.IsArr(ByVal Value)
类型转换:
Convert.ToStr(ByVal Value)
Convert.ToInt(ByVal Value)
Convert.ToLng(ByVal Value)
Convert.ToSng(ByVal Value)
Convert.ToDbl(ByVal Value)
Convert.ToBln(ByVal Value)
Convert.ToCur(ByVal Value)
Convert.ToDat(ByVal Value)
格式化:
Convert.FormatDat(ByVal Value, ByVal vStyle) 日期格式化
Convert.FormatCur(ByVal Value,ByVal vDecimal) 货币格式化
Convert.FormatNum(ByVal Value,ByVal vDecimal) 数字格式化
其他格式化:
Convert.ToPer(Byval value,Byval value0) 百分数,带%
Convert.FirstUppercase(ByVal value) 首字母大写
Convert.SafeSql(ByVal value) 替换sql中的'为''
代码如下: (我不会插入代码,不知道CSDN是怎么操作的,点插入代码就是一个<textarea>,而不是可以折叠代码的风格,向了解的朋友请教.)
复制代码 代码如下:

Class Con_Convert
' ******global message
private i,j,value0,value1,value2
Private Sub Class_Initialize
End Sub
Private Sub Class_Terminate
End Sub
' ==============================================================================
' Check Type, Return ture/false
' ==============================================================================
Public Function IsStr(ByVal Value)
IsStr=true
End Function
' ****** check string if is Integer
Public Function IsInteger(ByVal Value)
if Trim(Value)="" or IsNull(Value) or IsEmpty(Value) then
IsInteger=false
else
IsInteger = True
value0=Trim(Value)
For i = 1 To len(value0)
If Asc(Mid(value0, i, 1))>= Asc("0") and Asc(Mid(value0, i, 1)) <= Asc("9") Then
Else
if Asc(Mid(value0, i, 1))= Asc("-") and i=1 then
else
IsInteger = false
Exit For
end if
End If
Next
end if
End Function
' ****** check if Value is in range of integer
' Only use in this class
' Value :
' vBound : max
Private Function IsOverflowInteger(ByVal Value,ByVal vBound)
if IsInteger(Value) and IsInteger(vBound) then
IsOverflowInteger=false
value0=trim(value)
value1=trim(vBound)
if IsOverflowInteger=false then
'delete 0 from left
do while ( left(value0,1)="0" or left(value0,1)="-" )
value0=right(value0,len(value0)-1)
loop
do while ( left(value1,1)="0" or left(value1,1)="-" )
value1=right(value1,len(value1)-1)
loop
if len(value0)=len(value1) then
for i=1 to len(value0)
if Asc(mid(value0,i,1)) > Asc(mid(value1,i,1)) or Asc(mid(value0,i,1)) > Asc("9") or Asc(mid(value0,i,1)) < Asc("0") then
IsOverflowInteger=true
exit for
end if
next
else
if len(value0)>len(value1) then
IsOverflowInteger=true
end if
end if
end if
else
IsOverflowInteger=true
end if
End Function
Public Function IsInt(ByVal Value)
IsInt=true
if left(trim(value),1)="-" then
if IsOverflowInteger(trim(value),"-32768") then
IsInt=false
end if
else
if IsOverflowInteger(trim(value),"32767") then
IsInt=false
end if
end if
end function
Public Function IsLng(ByVal Value)
IsLng=true
if left(trim(value),1)="-" then
if IsOverflowInteger(trim(value),"-2147483648") then
IsLng=false
end if
else
if IsOverflowInteger(trim(value),"2147483647") then
IsLng=false
end if
end if
End Function
' **************************************
' Decimal
' **************************************
' ****** check string if is Decimal
Private Function IsDecimal(ByVal Value)
dim intDecimalCount
intDecimalCount=0
if Trim(Value)="" or IsNull(Value) or IsEmpty(Value) then
IsDecimal=false
else
IsDecimal = True
value0=Trim(Value)
For i = 1 To len(value0)
If Asc(Mid(value0, i, 1))>= Asc("0") and Asc(Mid(value0, i, 1)) <= Asc("9") Then
Else
select case Asc(Mid(value0, i, 1))
case Asc("-")
if i=1 then
else
IsDecimal = false
Exit For
end if
case Asc(".")
if intDecimalCount<2 then
intDecimalCount=intDecimalCount + 1
else
IsDecimal = false
Exit For
end if
case else
IsDecimal = false
Exit For
end select
End If
Next
end if
End Function
' ****** check if Value is in range of Decimal
' Only use in this class
' Value :
' vBound :
Private Function IsOverflowDecimal(ByVal Value,ByVal vBound)
if Trim(Value)="" or IsNull(Value) or IsEmpty(Value) or Trim(vBound)="" or IsNull(vBound) or IsEmpty(vBound) then
IsOverflowDecimal=true
else
end if
End Function
Public Function IsSng(ByVal Value)
IsSng=IsDecimal(value)
' -340282300000000000000000000000000000000 ~ -0.000000000000000000000000000000000000000000001401298
' 0.000000000000000000000000000000000000000000001401298 ~ 340282300000000000000000000000000000000
' -3.402823 E38 ~ -1.401298 E-45
' 1.401298 E-45 ~ 3.402823 E38
End Function
Public Function IsDbl(ByVal Value)
IsDbl=IsDecimal(value)
' -1.79769313486232 E308 ~ -4.94065645841247 E-324
' 4.94065645841247 E-324 ~ 1.7976931348623 E308
End Function
Public Function IsCur(ByVal Value)
IsCur=IsDecimal(value)
'-922337203685477.5808 ~ 922337203685477.5807
End Function
Public Function IsBln(ByVal Value)
if Value=true or Value=false or trim(Value)="1" or trim(Value)="0" then
IsBln=true
else
IsBln=false
end if
End Function
Public Function IsDat(ByVal Value)
if Trim(Value)="" or IsNull(Value) or IsEmpty(Value) then
IsDat=false
else
IsDat=IsDate(Value)
end if
End Function
Public Function IsArr(ByVal Value)
if Trim(Value)="" or IsNull(Value) or IsEmpty(Value) then
IsArr=false
else
IsArr=IsArray(Value)
end if
End Function
' ==============================================================================
' Convert Type, Return value/initial value
' ==============================================================================
Public Function ToStr(ByVal Value)
ToStr=trim(Value)
End Function
Public Function ToInt(ByVal Value)
if IsInt(Value) then
ToInt=Cint(Value)
else
ToInt=0
end if
End Function
Public Function ToLng(ByVal Value)
if IsLng(Value) then
ToLng=clng(Value)
else
ToLng=0
end if
End Function
Public Function ToSng(ByVal Value)
if IsSng(Value) then
ToSng=cSng(Value)
else
ToSng=0
end if
End Function
Public Function ToDbl(ByVal Value)
if IsDbl(Value) then
ToDbl=cDbl(Value)
else
ToDbl=0
end if
End Function
Public Function ToBln(ByVal Value)
if IsBln(Value) then
ToBln=cbool(Value)
else
ToBln=false
end if
End Function
' ****** vDecimal : number of decimal places
Public Function ToCur(ByVal Value)
if IsCur(Value) then
ToCur=ccur(Value)
else
ToCur=0
end if
End Function
' ****** vType : format of date
Public Function ToDat(ByVal Value)
if IsDat(Value) then
ToDat=cdate(value)
else
ToDat=""
end if
End Function
' ==============================================================================
' Format
' ==============================================================================
' *******************************************************
'FormatDat
'vdate
'vStyle 0:2008-1-30 1:2008/1/30 2:1/30/2008 3:30/1/2008 4:30-JAN-2008
' 10:2008-1 11:2008/1 12:1/2008
' 22:JAN-2008
' 30:2008-1-30 11:20:20
' 40:2008-01-09
Public Function FormatDat(ByVal Value, ByVal vStyle)
dim dateThis,intStyle
dateThis=ToDat(Value)
intStyle=ToInt(vStyle)
if dateThis="" or isnull(dateThis) then
FormatDat = ""
else
Dim arrMonthArray(12)
arrMonthArray(1)="JAN"
arrMonthArray(2)="FEB"
arrMonthArray(3)="MAR"
arrMonthArray(4)="APR"
arrMonthArray(5)="MAY"
arrMonthArray(6)="JUN"
arrMonthArray(7)="JUL"
arrMonthArray(8)="AUG"
arrMonthArray(9)="SEP"
arrMonthArray(10)="OCT"
arrMonthArray(11)="NOV"
arrMonthArray(12)="DEC"
select case intStyle
case 1
FormatDat=cstr(year(dateThis)) &"/"& cstr(month(dateThis)) &"/"& cstr(day(dateThis))
case 2
FormatDat= cstr(month(dateThis)) &"/"& cstr(day(dateThis)) &"/"& cstr(year(dateThis))
case 3
FormatDat= cstr(day(dateThis)) &"/"& cstr(month(dateThis)) &"/"& cstr(year(dateThis))
case 4
FormatDat= cstr(day(dateThis)) &"-"& arrMonthArray(month(dateThis)) &"-"& cstr(year(dateThis))
case 10
FormatDat=cstr(year(dateThis)) &"-"& cstr(month(dateThis))
case 11
FormatDat=cstr(year(dateThis)) &"/"& cstr(month(dateThis))
case 12
FormatDat= cstr(month(dateThis)) &"/"& cstr(year(dateThis))
case 22
FormatDat= arrMonthArray(month(dateThis)) &"-"& cstr(year(dateThis))
case 30
FormatDat= cstr(year(dateThis)) &"-"& cstr(month(dateThis)) &"-"& cstr(day(dateThis)) &" "& hour(dateThis) &":"& minute(dateThis) &":"& second(dateThis)
case 40
FormatDat=cstr(year(dateThis)) &"-"& ZeroPad(cstr(month(dateThis)),2) &"-"& ZeroPad(cstr(day(dateThis)),2)
case else
FormatDat=cstr(year(dateThis)) &"-"& cstr(month(dateThis)) &"-"& cstr(day(dateThis))
end select
end if
End Function
' **************
'FormatCur
' **************
Public Function FormatCur(ByVal Value,ByVal vDecimal)
FormatCur=Formatcurrency(ToCur(Value),ToInt(vDecimal))
End Function
Public Function FormatNum(ByVal Value,ByVal vDecimal)
FormatNum=FormatNumber(ToDbl(Value),ToInt(vDecimal))
End Function
' ==============================================================================
' other format
' ==============================================================================
Public Function ToPer(Byval value,Byval value0)
if Convert.ToDbl(value0)<>0 then
ToPer = me.FormatNum( Convert.ToDbl(value) / Convert.ToDbl(value0) * 100,2 ) & "% "
else
ToPer = "0.00%"
end if
End Function
' ****** value -> Value first code change to uppercase
Public Function FirstUppercase(ByVal value)
value0 = trim(value)
if len(value0)=0 then
FirstUppercase = ""
else
FirstUppercase = UCase(left(value0,1)) & right(value0,len(value0)-1)
end if
End Function
Public Function SafeSql(ByVal value)
SafeSql = replace(value,"'","''")
End Function
End Class