1*b1cdbd2cSJim Jagielski<?xml version="1.0" encoding="UTF-8"?> 2*b1cdbd2cSJim Jagielski<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3*b1cdbd2cSJim Jagielski<!--*********************************************************** 4*b1cdbd2cSJim Jagielski * 5*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 6*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 7*b1cdbd2cSJim Jagielski * distributed with this work for additional information 8*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 9*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 10*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 11*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 14*b1cdbd2cSJim Jagielski * 15*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 16*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 17*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 19*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 20*b1cdbd2cSJim Jagielski * under the License. 21*b1cdbd2cSJim Jagielski * 22*b1cdbd2cSJim Jagielski ***********************************************************--> 23*b1cdbd2cSJim Jagielski<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Strings" script:language="StarBasic">Option Explicit 24*b1cdbd2cSJim JagielskiPublic sProductname as String 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski' Deletes out of a String 'BigString' all possible PartStrings, that are summed up 28*b1cdbd2cSJim Jagielski' in the Array 'ElimArray' 29*b1cdbd2cSJim JagielskiFunction ElimChar(ByVal BigString as String, ElimArray() as String) 30*b1cdbd2cSJim JagielskiDim i% ,n% 31*b1cdbd2cSJim Jagielski For i = 0 to Ubound(ElimArray) 32*b1cdbd2cSJim Jagielski BigString = DeleteStr(BigString,ElimArray(i) 33*b1cdbd2cSJim Jagielski Next 34*b1cdbd2cSJim Jagielski ElimChar = BigString 35*b1cdbd2cSJim JagielskiEnd Function 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski' Deletes out of a String 'BigString' a possible Partstring 'CompString' 39*b1cdbd2cSJim JagielskiFunction DeleteStr(ByVal BigString,CompString as String) as String 40*b1cdbd2cSJim JagielskiDim i%, CompLen%, BigLen% 41*b1cdbd2cSJim Jagielski CompLen = Len(CompString) 42*b1cdbd2cSJim Jagielski i = 1 43*b1cdbd2cSJim Jagielski While i <> 0 44*b1cdbd2cSJim Jagielski i = Instr(i, BigString,CompString) 45*b1cdbd2cSJim Jagielski If i <> 0 then 46*b1cdbd2cSJim Jagielski BigLen = Len(BigString) 47*b1cdbd2cSJim Jagielski BigString = Mid(BigString,1,i-1) + Mid(BigString,i+CompLen,BigLen-i+1-CompLen) 48*b1cdbd2cSJim Jagielski End If 49*b1cdbd2cSJim Jagielski Wend 50*b1cdbd2cSJim Jagielski DeleteStr = BigString 51*b1cdbd2cSJim JagielskiEnd Function 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski' Finds a PartString, that is framed by the Strings 'Prestring' and 'PostString' 55*b1cdbd2cSJim JagielskiFunction FindPartString(BigString, PreString, PostString as String, SearchPos as Integer) as String 56*b1cdbd2cSJim JagielskiDim StartPos%, EndPos% 57*b1cdbd2cSJim JagielskiDim BigLen%, PreLen%, PostLen% 58*b1cdbd2cSJim Jagielski StartPos = Instr(SearchPos,BigString,PreString) 59*b1cdbd2cSJim Jagielski If StartPos <> 0 Then 60*b1cdbd2cSJim Jagielski PreLen = Len(PreString) 61*b1cdbd2cSJim Jagielski EndPos = Instr(StartPos + PreLen,BigString,PostString) 62*b1cdbd2cSJim Jagielski If EndPos <> 0 Then 63*b1cdbd2cSJim Jagielski BigLen = Len(BigString) 64*b1cdbd2cSJim Jagielski PostLen = Len(PostString) 65*b1cdbd2cSJim Jagielski FindPartString = Mid(BigString,StartPos + PreLen, EndPos - (StartPos + PreLen)) 66*b1cdbd2cSJim Jagielski SearchPos = EndPos + PostLen 67*b1cdbd2cSJim Jagielski Else 68*b1cdbd2cSJim Jagielski Msgbox("No final tag for '" & PreString & "' existing", 16, GetProductName()) 69*b1cdbd2cSJim Jagielski FindPartString = "" 70*b1cdbd2cSJim Jagielski End If 71*b1cdbd2cSJim Jagielski Else 72*b1cdbd2cSJim Jagielski FindPartString = "" 73*b1cdbd2cSJim Jagielski End If 74*b1cdbd2cSJim JagielskiEnd Function 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski' Note iCompare = 0 (Binary comparison) 78*b1cdbd2cSJim Jagielski' iCompare = 1 (Text comparison) 79*b1cdbd2cSJim JagielskiFunction PartStringInArray(BigArray(), SearchString as String, iCompare as Integer) as Integer 80*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 81*b1cdbd2cSJim JagielskiDim i as Integer 82*b1cdbd2cSJim Jagielski MaxIndex = Ubound(BigArray()) 83*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 84*b1cdbd2cSJim Jagielski If Instr(1, BigArray(i), SearchString, iCompare) <> 0 Then 85*b1cdbd2cSJim Jagielski PartStringInArray() = i 86*b1cdbd2cSJim Jagielski Exit Function 87*b1cdbd2cSJim Jagielski End If 88*b1cdbd2cSJim Jagielski Next i 89*b1cdbd2cSJim Jagielski PartStringInArray() = -1 90*b1cdbd2cSJim JagielskiEnd Function 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski' Deletes the String 'SmallString' out of the String 'BigString' 94*b1cdbd2cSJim Jagielski' in case SmallString's Position in BigString is right at the end 95*b1cdbd2cSJim JagielskiFunction RTrimStr(ByVal BigString, SmallString as String) as String 96*b1cdbd2cSJim JagielskiDim SmallLen as Integer 97*b1cdbd2cSJim JagielskiDim BigLen as Integer 98*b1cdbd2cSJim Jagielski SmallLen = Len(SmallString) 99*b1cdbd2cSJim Jagielski BigLen = Len(BigString) 100*b1cdbd2cSJim Jagielski If Instr(1,BigString, SmallString) <> 0 Then 101*b1cdbd2cSJim Jagielski If Mid(BigString,BigLen + 1 - SmallLen, SmallLen) = SmallString Then 102*b1cdbd2cSJim Jagielski RTrimStr = Mid(BigString,1,BigLen - SmallLen) 103*b1cdbd2cSJim Jagielski Else 104*b1cdbd2cSJim Jagielski RTrimStr = BigString 105*b1cdbd2cSJim Jagielski End If 106*b1cdbd2cSJim Jagielski Else 107*b1cdbd2cSJim Jagielski RTrimStr = BigString 108*b1cdbd2cSJim Jagielski End If 109*b1cdbd2cSJim JagielskiEnd Function 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski' Deletes the Char 'CompChar' out of the String 'BigString' 113*b1cdbd2cSJim Jagielski' in case CompChar's Position in BigString is right at the beginning 114*b1cdbd2cSJim JagielskiFunction LTRimChar(ByVal BigString as String,CompChar as String) as String 115*b1cdbd2cSJim JagielskiDim BigLen as integer 116*b1cdbd2cSJim Jagielski BigLen = Len(BigString) 117*b1cdbd2cSJim Jagielski If BigLen > 1 Then 118*b1cdbd2cSJim Jagielski If Left(BigString,1) = CompChar then 119*b1cdbd2cSJim Jagielski BigString = Mid(BigString,2,BigLen-1) 120*b1cdbd2cSJim Jagielski End If 121*b1cdbd2cSJim Jagielski ElseIf BigLen = 1 Then 122*b1cdbd2cSJim Jagielski BigString = "" 123*b1cdbd2cSJim Jagielski End If 124*b1cdbd2cSJim Jagielski LTrimChar = BigString 125*b1cdbd2cSJim JagielskiEnd Function 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski' Retrieves an Array out of a String. 129*b1cdbd2cSJim Jagielski' The fields of the Array are separated by the parameter 'Separator', that is contained 130*b1cdbd2cSJim Jagielski' in the Array 131*b1cdbd2cSJim Jagielski' The Array MaxIndex delivers the highest Index of this Array 132*b1cdbd2cSJim JagielskiFunction ArrayOutOfString(BigString, Separator as String, Optional MaxIndex as Integer) 133*b1cdbd2cSJim JagielskiDim LocList() as String 134*b1cdbd2cSJim Jagielski LocList=Split(BigString,Separator) 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski If not isMissing(MaxIndex) then maxIndex=ubound(LocList()) 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski ArrayOutOfString=LocList 139*b1cdbd2cSJim JagielskiEnd Function 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski' Deletes all fieldvalues in one-dimensional Array 143*b1cdbd2cSJim JagielskiSub ClearArray(BigArray) 144*b1cdbd2cSJim JagielskiDim i as integer 145*b1cdbd2cSJim Jagielski For i = Lbound(BigArray()) to Ubound(BigArray()) 146*b1cdbd2cSJim Jagielski BigArray(i) = "" 147*b1cdbd2cSJim Jagielski Next 148*b1cdbd2cSJim JagielskiEnd Sub 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski' Deletes all fieldvalues in a multidimensional Array 152*b1cdbd2cSJim JagielskiSub ClearMultiDimArray(BigArray,DimCount as integer) 153*b1cdbd2cSJim JagielskiDim n%, m% 154*b1cdbd2cSJim Jagielski For n = Lbound(BigArray(),1) to Ubound(BigArray(),1) 155*b1cdbd2cSJim Jagielski For m = 0 to Dimcount - 1 156*b1cdbd2cSJim Jagielski BigArray(n,m) = "" 157*b1cdbd2cSJim Jagielski Next m 158*b1cdbd2cSJim Jagielski Next n 159*b1cdbd2cSJim JagielskiEnd Sub 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski' Checks if a Field (LocField) is already defined in an Array 163*b1cdbd2cSJim Jagielski' Returns 'True' or 'False' 164*b1cdbd2cSJim JagielskiFunction FieldinArray(LocArray(), MaxIndex as integer, LocField as String) As Boolean 165*b1cdbd2cSJim JagielskiDim i as integer 166*b1cdbd2cSJim Jagielski For i = Lbound(LocArray()) to MaxIndex 167*b1cdbd2cSJim Jagielski If Ucase(LocArray(i)) = Ucase(LocField) Then 168*b1cdbd2cSJim Jagielski FieldInArray = True 169*b1cdbd2cSJim Jagielski Exit Function 170*b1cdbd2cSJim Jagielski End if 171*b1cdbd2cSJim Jagielski Next 172*b1cdbd2cSJim Jagielski FieldInArray = False 173*b1cdbd2cSJim JagielskiEnd Function 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski' Checks if a Field (LocField) is already defined in an Array 177*b1cdbd2cSJim Jagielski' Returns 'True' or 'False' 178*b1cdbd2cSJim JagielskiFunction FieldinList(LocField, BigList()) As Boolean 179*b1cdbd2cSJim JagielskiDim i as integer 180*b1cdbd2cSJim Jagielski For i = Lbound(BigList()) to Ubound(BigList()) 181*b1cdbd2cSJim Jagielski If LocField = BigList(i) Then 182*b1cdbd2cSJim Jagielski FieldInList = True 183*b1cdbd2cSJim Jagielski Exit Function 184*b1cdbd2cSJim Jagielski End if 185*b1cdbd2cSJim Jagielski Next 186*b1cdbd2cSJim Jagielski FieldInList = False 187*b1cdbd2cSJim JagielskiEnd Function 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski' Retrieves the Index of the delivered String 'SearchString' in 191*b1cdbd2cSJim Jagielski' the Array LocList()' 192*b1cdbd2cSJim JagielskiFunction IndexinArray(SearchString as String, LocList()) as Integer 193*b1cdbd2cSJim JagielskiDim i as integer 194*b1cdbd2cSJim Jagielski For i = Lbound(LocList(),1) to Ubound(LocList(),1) 195*b1cdbd2cSJim Jagielski If Ucase(LocList(i,0)) = Ucase(SearchString) Then 196*b1cdbd2cSJim Jagielski IndexinArray = i 197*b1cdbd2cSJim Jagielski Exit Function 198*b1cdbd2cSJim Jagielski End if 199*b1cdbd2cSJim Jagielski Next 200*b1cdbd2cSJim Jagielski IndexinArray = -1 201*b1cdbd2cSJim JagielskiEnd Function 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim JagielskiSub MultiArrayInListbox(oDialog as Object, ListboxName as String, ValList(), iDim as Integer) 205*b1cdbd2cSJim JagielskiDim oListbox as Object 206*b1cdbd2cSJim JagielskiDim i as integer 207*b1cdbd2cSJim JagielskiDim a as Integer 208*b1cdbd2cSJim Jagielski a = 0 209*b1cdbd2cSJim Jagielski oListbox = oDialog.GetControl(ListboxName) 210*b1cdbd2cSJim Jagielski oListbox.RemoveItems(0, oListbox.GetItemCount) 211*b1cdbd2cSJim Jagielski For i = 0 to Ubound(ValList(), 1) 212*b1cdbd2cSJim Jagielski If ValList(i) <> "" Then 213*b1cdbd2cSJim Jagielski oListbox.AddItem(ValList(i, iDim-1), a) 214*b1cdbd2cSJim Jagielski a = a + 1 215*b1cdbd2cSJim Jagielski End If 216*b1cdbd2cSJim Jagielski Next 217*b1cdbd2cSJim JagielskiEnd Sub 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski' Searches for a String in a two-dimensional Array by querying all Searchindexex of the second dimension 221*b1cdbd2cSJim Jagielski' and delivers the specific String of the ReturnIndex in the second dimension of the Searchlist() 222*b1cdbd2cSJim JagielskiFunction StringInMultiArray(SearchList(), SearchString as String, SearchIndex as Integer, ReturnIndex as Integer, Optional MaxIndex as Integer) as String 223*b1cdbd2cSJim JagielskiDim i as integer 224*b1cdbd2cSJim JagielskiDim CurFieldString as String 225*b1cdbd2cSJim Jagielski If IsMissing(MaxIndex) Then 226*b1cdbd2cSJim Jagielski MaxIndex = Ubound(SearchList(),1) 227*b1cdbd2cSJim Jagielski End If 228*b1cdbd2cSJim Jagielski For i = Lbound(SearchList()) to MaxIndex 229*b1cdbd2cSJim Jagielski CurFieldString = SearchList(i,SearchIndex) 230*b1cdbd2cSJim Jagielski If Ucase(CurFieldString) = Ucase(SearchString) Then 231*b1cdbd2cSJim Jagielski StringInMultiArray() = SearchList(i,ReturnIndex) 232*b1cdbd2cSJim Jagielski Exit Function 233*b1cdbd2cSJim Jagielski End if 234*b1cdbd2cSJim Jagielski Next 235*b1cdbd2cSJim Jagielski StringInMultiArray() = "" 236*b1cdbd2cSJim JagielskiEnd Function 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski' Searches for a Value in multidimensial Array by querying all Searchindices of the passed dimension 240*b1cdbd2cSJim Jagielski' and delivers the Index where it is found. 241*b1cdbd2cSJim JagielskiFunction GetIndexInMultiArray(SearchList(), SearchValue, SearchIndex as Integer) as Integer 242*b1cdbd2cSJim JagielskiDim i as integer 243*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 244*b1cdbd2cSJim JagielskiDim CurFieldValue 245*b1cdbd2cSJim Jagielski MaxIndex = Ubound(SearchList(),1) 246*b1cdbd2cSJim Jagielski For i = Lbound(SearchList()) to MaxIndex 247*b1cdbd2cSJim Jagielski CurFieldValue = SearchList(i,SearchIndex) 248*b1cdbd2cSJim Jagielski If CurFieldValue = SearchValue Then 249*b1cdbd2cSJim Jagielski GetIndexInMultiArray() = i 250*b1cdbd2cSJim Jagielski Exit Function 251*b1cdbd2cSJim Jagielski End if 252*b1cdbd2cSJim Jagielski Next 253*b1cdbd2cSJim Jagielski GetIndexInMultiArray() = -1 254*b1cdbd2cSJim JagielskiEnd Function 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski 257*b1cdbd2cSJim Jagielski' Searches for a Value in multidimensial Array by querying all Searchindices of the passed dimension 258*b1cdbd2cSJim Jagielski' and delivers the Index where the Searchvalue is found as a part string 259*b1cdbd2cSJim JagielskiFunction GetIndexForPartStringinMultiArray(SearchList(), SearchValue, SearchIndex as Integer) as Integer 260*b1cdbd2cSJim JagielskiDim i as integer 261*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 262*b1cdbd2cSJim JagielskiDim CurFieldValue 263*b1cdbd2cSJim Jagielski MaxIndex = Ubound(SearchList(),1) 264*b1cdbd2cSJim Jagielski For i = Lbound(SearchList()) to MaxIndex 265*b1cdbd2cSJim Jagielski CurFieldValue = SearchList(i,SearchIndex) 266*b1cdbd2cSJim Jagielski If Instr(CurFieldValue, SearchValue) > 0 Then 267*b1cdbd2cSJim Jagielski GetIndexForPartStringinMultiArray() = i 268*b1cdbd2cSJim Jagielski Exit Function 269*b1cdbd2cSJim Jagielski End if 270*b1cdbd2cSJim Jagielski Next 271*b1cdbd2cSJim Jagielski GetIndexForPartStringinMultiArray = -1 272*b1cdbd2cSJim JagielskiEnd Function 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim JagielskiFunction ArrayfromMultiArray(MultiArray as String, iDim as Integer) 276*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 277*b1cdbd2cSJim JagielskiDim i as Integer 278*b1cdbd2cSJim Jagielski MaxIndex = Ubound(MultiArray()) 279*b1cdbd2cSJim Jagielski Dim ResultArray(MaxIndex) as String 280*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 281*b1cdbd2cSJim Jagielski ResultArray(i) = MultiArray(i,iDim) 282*b1cdbd2cSJim Jagielski Next i 283*b1cdbd2cSJim Jagielski ArrayfromMultiArray() = ResultArray() 284*b1cdbd2cSJim JagielskiEnd Function 285*b1cdbd2cSJim Jagielski 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski' Replaces the string "OldReplace" through the String "NewReplace" in the String 288*b1cdbd2cSJim Jagielski' 'BigString' 289*b1cdbd2cSJim JagielskiFunction ReplaceString(ByVal Bigstring, NewReplace, OldReplace as String) as String 290*b1cdbd2cSJim Jagielski ReplaceString=join(split(BigString,OldReplace),NewReplace) 291*b1cdbd2cSJim JagielskiEnd Function 292*b1cdbd2cSJim Jagielski 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski' Retrieves the second value for a next to 'SearchString' in 295*b1cdbd2cSJim Jagielski' a two-dimensional string-Array 296*b1cdbd2cSJim JagielskiFunction FindSecondValue(SearchString as String, TwoDimList() as String ) as String 297*b1cdbd2cSJim JagielskiDim i as Integer 298*b1cdbd2cSJim Jagielski For i = 0 To Ubound(TwoDimList,1) 299*b1cdbd2cSJim Jagielski If Ucase(SearchString) = Ucase(TwoDimList(i,0)) Then 300*b1cdbd2cSJim Jagielski FindSecondValue = TwoDimList(i,1) 301*b1cdbd2cSJim Jagielski Exit For 302*b1cdbd2cSJim Jagielski End If 303*b1cdbd2cSJim Jagielski Next 304*b1cdbd2cSJim JagielskiEnd Function 305*b1cdbd2cSJim Jagielski 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski' raises a base to a certain power 308*b1cdbd2cSJim JagielskiFunction Power(Basis as Double, Exponent as Double) as Double 309*b1cdbd2cSJim Jagielski Power = Exp(Exponent*Log(Basis)) 310*b1cdbd2cSJim JagielskiEnd Function 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski 313*b1cdbd2cSJim Jagielski' rounds a Real to a given Number of Decimals 314*b1cdbd2cSJim JagielskiFunction Round(BaseValue as Double, Decimals as Integer) as Double 315*b1cdbd2cSJim JagielskiDim Multiplicator as Long 316*b1cdbd2cSJim JagielskiDim DblValue#, RoundValue# 317*b1cdbd2cSJim Jagielski Multiplicator = Power(10,Decimals) 318*b1cdbd2cSJim Jagielski RoundValue = Int(BaseValue * Multiplicator) 319*b1cdbd2cSJim Jagielski Round = RoundValue/Multiplicator 320*b1cdbd2cSJim JagielskiEnd Function 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski 323*b1cdbd2cSJim Jagielski'Retrieves the mere filename out of a whole path 324*b1cdbd2cSJim JagielskiFunction FileNameoutofPath(ByVal Path as String, Optional Separator as String) as String 325*b1cdbd2cSJim JagielskiDim i as Integer 326*b1cdbd2cSJim JagielskiDim SepList() as String 327*b1cdbd2cSJim Jagielski If IsMissing(Separator) Then 328*b1cdbd2cSJim Jagielski Path = ConvertFromUrl(Path) 329*b1cdbd2cSJim Jagielski Separator = GetPathSeparator() 330*b1cdbd2cSJim Jagielski End If 331*b1cdbd2cSJim Jagielski SepList() = ArrayoutofString(Path, Separator,i) 332*b1cdbd2cSJim Jagielski FileNameoutofPath = SepList(i) 333*b1cdbd2cSJim JagielskiEnd Function 334*b1cdbd2cSJim Jagielski 335*b1cdbd2cSJim Jagielski 336*b1cdbd2cSJim JagielskiFunction GetFileNameExtension(ByVal FileName as String) 337*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 338*b1cdbd2cSJim JagielskiDim SepList() as String 339*b1cdbd2cSJim Jagielski SepList() = ArrayoutofString(FileName,".", MaxIndex) 340*b1cdbd2cSJim Jagielski GetFileNameExtension = SepList(MaxIndex) 341*b1cdbd2cSJim JagielskiEnd Function 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim JagielskiFunction GetFileNameWithoutExtension(ByVal FileName as String, Optional Separator as String) 345*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 346*b1cdbd2cSJim JagielskiDim SepList() as String 347*b1cdbd2cSJim Jagielski If not IsMissing(Separator) Then 348*b1cdbd2cSJim Jagielski FileName = FileNameoutofPath(FileName, Separator) 349*b1cdbd2cSJim Jagielski End If 350*b1cdbd2cSJim Jagielski SepList() = ArrayoutofString(FileName,".", MaxIndex) 351*b1cdbd2cSJim Jagielski GetFileNameWithoutExtension = RTrimStr(FileName, "." & SepList(MaxIndex) 352*b1cdbd2cSJim JagielskiEnd Function 353*b1cdbd2cSJim Jagielski 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim JagielskiFunction DirectoryNameoutofPath(sPath as String, Separator as String) as String 356*b1cdbd2cSJim JagielskiDim LocFileName as String 357*b1cdbd2cSJim Jagielski LocFileName = FileNameoutofPath(sPath, Separator) 358*b1cdbd2cSJim Jagielski DirectoryNameoutofPath = RTrimStr(sPath, Separator & LocFileName) 359*b1cdbd2cSJim JagielskiEnd Function 360*b1cdbd2cSJim Jagielski 361*b1cdbd2cSJim Jagielski 362*b1cdbd2cSJim JagielskiFunction CountCharsinString(BigString, LocChar as String, ByVal StartPos as Integer) as Integer 363*b1cdbd2cSJim JagielskiDim LocCount%, LocPos% 364*b1cdbd2cSJim Jagielski LocCount = 0 365*b1cdbd2cSJim Jagielski Do 366*b1cdbd2cSJim Jagielski LocPos = Instr(StartPos,BigString,LocChar) 367*b1cdbd2cSJim Jagielski If LocPos <> 0 Then 368*b1cdbd2cSJim Jagielski LocCount = LocCount + 1 369*b1cdbd2cSJim Jagielski StartPos = LocPos+1 370*b1cdbd2cSJim Jagielski End If 371*b1cdbd2cSJim Jagielski Loop until LocPos = 0 372*b1cdbd2cSJim Jagielski CountCharsInString = LocCount 373*b1cdbd2cSJim JagielskiEnd Function 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski 376*b1cdbd2cSJim JagielskiFunction BubbleSortList(ByVal SortList(),optional sort2ndValue as Boolean) 377*b1cdbd2cSJim Jagielski'This function bubble sorts an array of maximum 2 dimensions. 378*b1cdbd2cSJim Jagielski'The default sorting order is the first dimension 379*b1cdbd2cSJim Jagielski'Only if sort2ndValue is True the second dimension is the relevant for the sorting order 380*b1cdbd2cSJim Jagielski Dim s as Integer 381*b1cdbd2cSJim Jagielski Dim t as Integer 382*b1cdbd2cSJim Jagielski Dim i as Integer 383*b1cdbd2cSJim Jagielski Dim k as Integer 384*b1cdbd2cSJim Jagielski Dim dimensions as Integer 385*b1cdbd2cSJim Jagielski Dim sortvalue as Integer 386*b1cdbd2cSJim Jagielski Dim DisplayDummy 387*b1cdbd2cSJim Jagielski dimensions = 2 388*b1cdbd2cSJim Jagielski 389*b1cdbd2cSJim JagielskiOn Local Error Goto No2ndDim 390*b1cdbd2cSJim Jagielski k = Ubound(SortList(),2) 391*b1cdbd2cSJim Jagielski No2ndDim: 392*b1cdbd2cSJim Jagielski If Err <> 0 Then dimensions = 1 393*b1cdbd2cSJim Jagielski 394*b1cdbd2cSJim Jagielski i = Ubound(SortList(),1) 395*b1cdbd2cSJim Jagielski If ismissing(sort2ndValue) then 396*b1cdbd2cSJim Jagielski sortvalue = 0 397*b1cdbd2cSJim Jagielski else 398*b1cdbd2cSJim Jagielski sortvalue = 1 399*b1cdbd2cSJim Jagielski end if 400*b1cdbd2cSJim Jagielski 401*b1cdbd2cSJim Jagielski For s = 1 to i - 1 402*b1cdbd2cSJim Jagielski For t = 0 to i-s 403*b1cdbd2cSJim Jagielski Select Case dimensions 404*b1cdbd2cSJim Jagielski Case 1 405*b1cdbd2cSJim Jagielski If SortList(t) > SortList(t+1) Then 406*b1cdbd2cSJim Jagielski DisplayDummy = SortList(t) 407*b1cdbd2cSJim Jagielski SortList(t) = SortList(t+1) 408*b1cdbd2cSJim Jagielski SortList(t+1) = DisplayDummy 409*b1cdbd2cSJim Jagielski End If 410*b1cdbd2cSJim Jagielski Case 2 411*b1cdbd2cSJim Jagielski If SortList(t,sortvalue) > SortList(t+1,sortvalue) Then 412*b1cdbd2cSJim Jagielski For k = 0 to UBound(SortList(),2) 413*b1cdbd2cSJim Jagielski DisplayDummy = SortList(t,k) 414*b1cdbd2cSJim Jagielski SortList(t,k) = SortList(t+1,k) 415*b1cdbd2cSJim Jagielski SortList(t+1,k) = DisplayDummy 416*b1cdbd2cSJim Jagielski Next k 417*b1cdbd2cSJim Jagielski End If 418*b1cdbd2cSJim Jagielski End Select 419*b1cdbd2cSJim Jagielski Next t 420*b1cdbd2cSJim Jagielski Next s 421*b1cdbd2cSJim Jagielski BubbleSortList = SortList() 422*b1cdbd2cSJim JagielskiEnd Function 423*b1cdbd2cSJim Jagielski 424*b1cdbd2cSJim Jagielski 425*b1cdbd2cSJim JagielskiFunction GetValueoutofList(SearchValue, BigList(), iDim as Integer, Optional ValueIndex) 426*b1cdbd2cSJim JagielskiDim i as Integer 427*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 428*b1cdbd2cSJim Jagielski MaxIndex = Ubound(BigList(),1) 429*b1cdbd2cSJim Jagielski For i = 0 To MaxIndex 430*b1cdbd2cSJim Jagielski If BigList(i,0) = SearchValue Then 431*b1cdbd2cSJim Jagielski If Not IsMissing(ValueIndex) Then 432*b1cdbd2cSJim Jagielski ValueIndex = i 433*b1cdbd2cSJim Jagielski End If 434*b1cdbd2cSJim Jagielski GetValueOutOfList() = BigList(i,iDim) 435*b1cdbd2cSJim Jagielski End If 436*b1cdbd2cSJim Jagielski Next i 437*b1cdbd2cSJim JagielskiEnd Function 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski 440*b1cdbd2cSJim JagielskiFunction AddListtoList(ByVal FirstArray(), ByVal SecondArray(), Optional StartIndex) 441*b1cdbd2cSJim JagielskiDim n as Integer 442*b1cdbd2cSJim JagielskiDim m as Integer 443*b1cdbd2cSJim JagielskiDim MaxIndex as Integer 444*b1cdbd2cSJim Jagielski MaxIndex = Ubound(FirstArray()) + Ubound(SecondArray()) + 1 445*b1cdbd2cSJim Jagielski If MaxIndex > -1 Then 446*b1cdbd2cSJim Jagielski Dim ResultArray(MaxIndex) 447*b1cdbd2cSJim Jagielski For m = 0 To Ubound(FirstArray()) 448*b1cdbd2cSJim Jagielski ResultArray(m) = FirstArray(m) 449*b1cdbd2cSJim Jagielski Next m 450*b1cdbd2cSJim Jagielski For n = 0 To Ubound(SecondArray()) 451*b1cdbd2cSJim Jagielski ResultArray(m) = SecondArray(n) 452*b1cdbd2cSJim Jagielski m = m + 1 453*b1cdbd2cSJim Jagielski Next n 454*b1cdbd2cSJim Jagielski AddListToList() = ResultArray() 455*b1cdbd2cSJim Jagielski Else 456*b1cdbd2cSJim Jagielski Dim NullArray() 457*b1cdbd2cSJim Jagielski AddListToList() = NullArray() 458*b1cdbd2cSJim Jagielski End If 459*b1cdbd2cSJim JagielskiEnd Function 460*b1cdbd2cSJim Jagielski 461*b1cdbd2cSJim Jagielski 462*b1cdbd2cSJim JagielskiFunction CheckDouble(DoubleString as String) 463*b1cdbd2cSJim JagielskiOn Local Error Goto WRONGDATATYPE 464*b1cdbd2cSJim Jagielski CheckDouble() = CDbl(DoubleString) 465*b1cdbd2cSJim JagielskiWRONGDATATYPE: 466*b1cdbd2cSJim Jagielski If Err <> 0 Then 467*b1cdbd2cSJim Jagielski CheckDouble() = 0 468*b1cdbd2cSJim Jagielski Resume NoErr: 469*b1cdbd2cSJim Jagielski End If 470*b1cdbd2cSJim JagielskiNOERR: 471*b1cdbd2cSJim JagielskiEnd Function 472*b1cdbd2cSJim Jagielski</script:module> 473