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