自定義高效率的數值管理函式
引入: 自定義
Castle(主要數值, 下限, 上限),當主要數值超出下限則傳回下限,超出上限則傳回上限,否則傳回本身。
]Function Castle(ByVal Main As Long, ByVal Least As Long, ByVal Most As Long) As Long
]If (Most < Least) Then
]Return 0
]End If
]If (Main < Least) Then
]Return Least
]End If
]If (Main > Most) Then
]Return Most
]End If
]Return Main
]End Function
Empire(新數值, 下限, 上限),將原本上下限範圍與以新數值建立的範圍比較,選擇大的那一個。當新數值修改了上限,傳回1,當新數值修改了下限,傳回-1,否則傳回0。
]Function Empire(ByVal NewNum As Long, ByRef Least As Long, ByRef Most As Long) As Short
]If (Most < Least) Then
]Return 0
]End If
]If (NewNum < Least) Then
]Least = NewNum
]Return -1
]End If
]If (NewNum > Most) Then
]Most = NewNum
]Return 1
]End If
]Return 0
]End Function
Sort(陣列資料),把凌亂的陣列依據數值由小到大,或是字串ASCII 由小到大排列。
]Function Sort(ByVal Origin As Array) As Array
]If (Origin Is Nothing) Then
]Return Nothing
]End If
]Dim Type As String = Nothing
]If ((TypeOf Origin(LBound(Origin)) Is Short) Or (TypeOf Origin(LBound(Origin)) Is Integer) Or (TypeOf Origin(LBound(Origin)) Is Long) Or (TypeOf Origin(LBound(Origin)) Is Double) Or (TypeOf Origin(LBound(Origin)) Is Single)) Then
]Type = "Integer"
]End If
]If ((TypeOf Origin(LBound(Origin)) Is String) Or (TypeOf Origin(LBound(Origin)) Is Char)) Then
]Type = "String"
]End If
]If (TypeOf Origin(LBound(Origin)) Is Date) Then
]Type = "Date"
]End If
]Select Case Type
]Case "Integer"
]Dim OverSort As Boolean = False
]Do Until OverSort
]OverSort = True
]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1
]If (Origin(i1) > Origin(i1 + 1)) Then
]Dim Temp As Object = Origin(i1)
]Origin(i1) = Origin(i1 + 1)
]Origin(i1 + 1) = Temp
]OverSort = False
]End If
]Next
]Loop
]Return Origin
]Case "String"
]Dim OverSort As Boolean = False
]Do Until OverSort
]OverSort = True
]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1
]Dim CharArray1 As Char() = Origin(i1).ToCharArray
]Dim CharArray2 As Char() = Origin(i1 + 1).ToCharArray
]For i2 As Integer = Which(">", New Integer() {LBound(CharArray1), LBound(CharArray2)}) To Which("<", New Integer() {UBound(CharArray1), LBound(CharArray2)}) Step 1
]Select Case Stick(AscW(CharArray2(i2)), AscW(CharArray1(i2)))
]Case 1
]Dim Temp As Object = Origin(i1)
]Origin(i1) = Origin(i1 + 1)
]Origin(i1 + 1) = Temp
]OverSort = False
]Exit For
]Case -1
]Exit For
]End Select
]Next
]Next
]Loop
]Return Origin
]Case "Date"
]Dim OverSort As Boolean = False
]Do Until OverSort
]OverSort = True
]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1
]If (Origin(i1).Ticks > Origin(i1 + 1).Ticks) Then
]Dim Temp As Date = Origin(i1)
]Origin(i1) = Origin(i1 + 1)
]Origin(i1 + 1) = Temp
]OverSort = False
]End If
]Next
]Loop
]Return Origin
]End Select
]Return Origin
]End Function
