Changeset 85824 in vbox for trunk/tools
- Timestamp:
- Aug 18, 2020 9:24:38 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 139981
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/win/vbscript/helpers.vbs
r85823 r85824 668 668 end function 669 669 670 '' Wrapper for StrComp as GetRef("StrComp") fails. 671 function WrapStrComp(str1, str2) 672 WrapStrComp = StrComp(str1, str2) 673 end function 670 674 671 675 '' 672 676 ' Returns a reverse sorted array (strings). 673 677 function ArraySortStrings(arrStrings) 674 ArraySortStrings = ArraySortStringsEx(arrStrings, GetRef(" StrComp"))678 ArraySortStrings = ArraySortStringsEx(arrStrings, GetRef("WrapStrComp")) 675 679 end function 676 680 … … 683 687 684 688 689 '' Wrapper for StrComp as GetRef("StrComp") fails. 690 function WrapStrCompNeg(str1, str2) 691 WrapStrCompNeg = -StrComp(str1, str2) 692 end function 693 685 694 '' 686 695 ' Returns a reverse sorted array (strings). 687 696 function ArrayRSortStrings(arrStrings) 688 ArrayRSortStrings = Array Reverse(ArraySortStringsEx(arrStrings, GetRef("StrComp")))697 ArrayRSortStrings = ArraySortStringsEx(arrStrings, GetRef("WrapStrCompNeg")) 689 698 end function 690 699 … … 707 716 708 717 '' 718 ' Returns an Array() statement string 719 function ArrayToString(arrStrings) 720 dim strRet 721 strRet = "Array(" 722 for i = LBound(arrStrings) to UBound(arrStrings) 723 if i <> LBound(arrStrings) then strRet = strRet & ", " 724 strRet = strRet & """" & arrStrings(i) & """" 725 next 726 ArrayToString = strRet & ")" 727 end function 728 729 730 '' 709 731 ' Returns the input array with the string appended. 710 ' Note! There must be some better way of doing this... 711 ' @todo Lots of copying here... 712 function ArrayAppend(arr, str) 713 dim i, cnt 714 cnt = UBound(arr) - LBound(arr) + 1 715 redim arrRet(cnt) 716 for i = LBound(arr) to UBound(arr) 717 arrRet(i) = arr(i) 718 next 719 arrRet(UBound(arr) + 1) = str 720 ArrayAppend = arrRet 732 ' @note This works by reference 733 function ArrayAppend(ByRef arr, str) 734 dim i 735 redim preserve arr(UBound(arr) + 1) 736 arr(UBound(arr)) = str 737 ArrayAppend = arr 738 end function 739 740 741 '' 742 ' Returns the input array with the string prepended. 743 ' @note This works by reference 744 function ArrayPrepend(ByRef arr, str) 745 dim i 746 redim preserve arr(UBound(arr) + 1) 747 for i = UBound(arr) to (LBound(arr) + 1) step -1 748 arr(i) = arr(i - 1) 749 next 750 arr(LBound(arr)) = str 751 ArrayPrepend = arr 752 end function 753 754 755 '' 756 ' Returns the input array with the string prepended. 757 ' @note This works by reference 758 function ArrayRemove(ByRef arr, idx) 759 dim i 760 for i = idx to (UBound(arr) - 1) 761 arr(i) = arr(i + 1) 762 next 763 redim preserve arr(UBound(arr) - 1) 764 ArrayRemove = arr 721 765 end function 722 766 … … 748 792 next 749 793 end function 794 795 796 '' 797 ' Returns the index of the first occurance of the given string; -1 if not found. 798 function ArrayFindString(ByRef arr, str) 799 dim i 800 for i = LBound(arr) to UBound(arr) 801 if StrComp(arr(i), str, vbBinaryCompare) = 0 then 802 ArrayFindString = i 803 exit function 804 end if 805 next 806 ArrayFindString = LBound(arr) - 1 807 end function 808 809 810 '' 811 ' Returns the index of the first occurance of the given string, -1 if not found, 812 ' case insensitive edition. 813 function ArrayFindStringI(ByRef arr, str) 814 dim i 815 for i = LBound(arr) to UBound(arr) 816 if StrComp(arr(i), str, vbTextCompare) = 0 then 817 ArrayFindStringI = i 818 exit function 819 end if 820 next 821 ArrayFindStringI = LBound(arr) - 1 822 end function 823 750 824 751 825 '' … … 1134 1208 if StrGetFirstWord("1234 5") <> "1234" then MsgFatal "SelfTest: StrGetFirstWord #5" 1135 1209 if StrGetFirstWord(" ") <> "" then MsgFatal "SelfTest: StrGetFirstWord #6" 1136 end sub 1137 1210 1211 dim arr 1212 arr = ArrayAppend(Array("0", "1"), "2") 1213 if ArraySize(arr) <> 3 then MsgFatal "SelfTest: Array #1: size:" & ArraySize(arr) 1214 if ArrayToString(arr) <> "Array(""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #1: " & ArrayToString(arr) 1215 1216 arr = ArrayPrepend(arr, "-1") 1217 if ArraySize(arr) <> 4 then MsgFatal "SelfTest: Array #2: size:" & ArraySize(arr) 1218 if ArrayToString(arr) <> "Array(""-1"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #2: " & ArrayToString(arr) 1219 1220 ArrayPrepend arr, "-2" 1221 if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #3: size:" & ArraySize(arr) 1222 if ArrayToString(arr) <> "Array(""-2"", ""-1"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #3: " & ArrayToString(arr) 1223 1224 ArrayRemove arr, 1 1225 if ArraySize(arr) <> 4 then MsgFatal "SelfTest: Array #4: size:" & ArraySize(arr) 1226 if ArrayToString(arr) <> "Array(""-2"", ""0"", ""1"", ""2"")" then MsgFatal "SelfTest: Array #4: " & ArrayToString(arr) 1227 1228 arr = ArrayRemove(arr, 2) 1229 if ArraySize(arr) <> 3 then MsgFatal "SelfTest: Array #5: size:" & ArraySize(arr) 1230 if ArrayToString(arr) <> "Array(""-2"", ""0"", ""2"")" then MsgFatal "SelfTest: Array #5: " & ArrayToString(arr) 1231 1232 arr = ArrayPrepend(arr, "42") 1233 arr = ArrayAppend(arr, "-42") 1234 if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #6: size:" & ArraySize(arr) 1235 if ArrayToString(arr) <> "Array(""42"", ""-2"", ""0"", ""2"", ""-42"")" then MsgFatal "SelfTest: Array #6: " & ArrayToString(arr) 1236 1237 arr = ArraySortStrings(arr) 1238 if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #7: size:" & ArraySize(arr) 1239 if ArrayToString(arr) <> "Array(""-2"", ""-42"", ""0"", ""2"", ""42"")" then MsgFatal "SelfTest: Array #7: " & ArrayToString(arr) 1240 1241 arr = ArrayRSortStrings(arr) 1242 if ArraySize(arr) <> 5 then MsgFatal "SelfTest: Array #7: size:" & ArraySize(arr) 1243 if ArrayToString(arr) <> "Array(""42"", ""2"", ""0"", ""-42"", ""-2"")" then MsgFatal "SelfTest: Array #8: " & ArrayToString(arr) 1244 1245 arr = ArrayVerSortStrings(Array("v10", "v1", "v0")) 1246 if ArrayToString(arr) <> "Array(""v0"", ""v1"", ""v10"")" then MsgFatal "SelfTest: Array #9: " & ArrayToString(arr) 1247 1248 arr = ArrayRVerSortStrings(arr) 1249 if ArrayToString(arr) <> "Array(""v10"", ""v1"", ""v0"")" then MsgFatal "SelfTest: Array #10: " & ArrayToString(arr) 1250 1251 end sub 1252
Note:
See TracChangeset
for help on using the changeset viewer.