Changeset 102
- Timestamp:
- Mar 26, 2007, 8:34:29 PM (18 years ago)
- Location:
- trunk/NewView
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NewView/BookmarksFormUnit.pas
r94 r102 67 67 ControlsUtility, 68 68 ACLDialogs, 69 ACLStringUtility,69 StringUtilsUnit, 70 70 DebugUnit; 71 71 … … 134 134 if DoConfirmDlg( DeleteBookmarkTitle, 135 135 DeleteBookmarkA 136 + Str DoubleQuote( Bookmark.Name)136 + StrInDoubleQuotes(Bookmark.Name) 137 137 + DeleteBookmarkB ) then 138 138 begin -
trunk/NewView/GlobalSearchForm.pas
r98 r102 145 145 ControlsUtility, 146 146 DriveInfoUnit, 147 ACLStringUtility,148 147 IPFFileFormatUnit, 149 148 HelpTopic, … … 152 151 SettingsUnit, 153 152 InformationFormUnit, 153 StringUtilsUnit, 154 154 FileUtilsUnit; 155 155 … … 495 495 ScanDirectoriesMsg ); 496 496 Dir := tmpSearchParameters.Directories[ i ]; 497 if StrEnds ( '...', Dir) then497 if StrEndsWith('...', Dir) then 498 498 begin 499 499 Dir := StrLeftWithout( Dir, 3 ); -
trunk/NewView/StringUtilsUnit.pas
r82 r102 16 16 StrLF = chr(10); 17 17 StrCRLF = StrCR + StrLF; 18 Quote = ''''; 19 DoubleQuote = '"'; 18 20 19 21 … … 43 45 // an optional escape character usable to escape field delimits. 44 46 // Example: 45 // StrExtractStrings('1x2x3\x4', "x", '\') ->46 // returns 4 strings: "1", "", "2" and "3x4"47 // StrExtractStrings('1x2x3\x4', 'x', '\') -> 48 // returns 4 strings: '1', '', '2' and '3x4' 47 49 Procedure StrExtractStrings(Var aResult : TStrings; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char); 48 50 … … 68 70 Function StrLeft(const aString : String; const aCount : Integer) : String; 69 71 72 // Returns a copy of the string without aCount chars from right 73 Function StrLeftWithout(const aString : String; const aCount : Integer) : String; 74 75 // Returns a copy of the string including all characters until one from aSetOfChars found 76 Function StrLeftUntil(const aReceiver: String; const aSetOfChars: TSetOfChars) : String; 77 78 // returns true if the String starts with the provides one 79 // this is case SENSITIVE 80 Function StrStartsWith(const aReceiver: String; const aStartString: String): Boolean; 81 82 // returns true if the String starts with the provides one 83 // this is case INsensitive 84 Function StrStartsWithIgnoringCase(const aReceiver: String; const aStartString: String): Boolean; 85 70 86 // returns true if the String ends with the provides one 71 87 // this is case SENSITIVE … … 74 90 // returns true if the String ends with the provides one 75 91 // this is case INsensitive 76 Function StrEndsWithIgnoringCase(const a String: String; const anEndString: String): Boolean;92 Function StrEndsWithIgnoringCase(const aReceiver: String; const anEndString: String): Boolean; 77 93 78 94 // the IntToStr generates wrong results … … 82 98 83 99 Function BoolToStr(const aBoolean : boolean ): string; 100 101 // Returns aString enclosed in double quotes 102 Function StrInDoubleQuotes(const aString : String) : String; 84 103 85 104 … … 350 369 351 370 371 Function StrLeftWithout(const aString : String; const aCount : Integer) : String; 372 Begin 373 Result:= copy(aString, 1, length(aString) - aCount ); 374 End; 375 376 377 Function StrLeftUntil(const aReceiver: String; const aSetOfChars: TSetOfChars) : String; 378 Var 379 i : integer; 380 Begin 381 Result := aReceiver; 382 383 for i := 1 To Length(aReceiver) do 384 begin 385 if aReceiver[i] in aSetOfChars then 386 begin 387 Result := Copy(aReceiver, 1, i-1 ); 388 break; 389 end; 390 end; 391 end; 392 393 394 Function StrStartsWith(const aReceiver: String; const aStartString: String) : Boolean; 395 Var 396 tmpStringPos : integer; 397 tmpStartStringLength : integer; 398 Begin 399 tmpStartStringLength := Length(aStartString); 400 401 if Length(aReceiver) < tmpStartStringLength then 402 begin 403 result := false; 404 exit; 405 end; 406 407 for tmpStringPos := 1 to tmpStartStringLength do 408 begin 409 if aReceiver[tmpStringPos] <> aStartString[tmpStringPos] then 410 begin 411 result := false; 412 exit; 413 end; 414 end; 415 416 result := true; 417 end; 418 419 420 Function StrStartsWithIgnoringCase(const aReceiver: String; const aStartString: String) : Boolean; 421 Var 422 tmpStringPos : integer; 423 tmpStartStringLength : integer; 424 Begin 425 tmpStartStringLength := Length(aStartString); 426 427 if Length(aReceiver) < tmpStartStringLength then 428 begin 429 result := false; 430 exit; 431 end; 432 433 for tmpStringPos := 1 to tmpStartStringLength do 434 begin 435 if UpCase(aReceiver[tmpStringPos]) <> UpCase(aStartString[tmpStringPos]) then 436 begin 437 result := false; 438 exit; 439 end; 440 end; 441 442 result := true; 443 end; 444 445 352 446 Function StrEndsWith(const aReceiver: String; const anEndString: String): Boolean; 353 447 Var … … 384 478 tmpMatchPos : Longint; 385 479 Begin 386 tmpStringPos := length(a String);480 tmpStringPos := length(aReceiver); 387 481 tmpMatchPos := length(anEndString); 388 482 … … 395 489 while tmpMatchPos > 0 do 396 490 begin 397 if upcase(a String[tmpStringPos]) <> upcase(anEndString[tmpMatchPos]) then491 if upcase(aReceiver[tmpStringPos]) <> upcase(anEndString[tmpMatchPos]) then 398 492 begin 399 493 result := false; … … 406 500 result := true; 407 501 end; 502 408 503 409 504 Function LongWordToStr(const aLongWord: LongWord) : String; … … 450 545 end; 451 546 547 Function StrInDoubleQuotes(const aString : String) : String; 548 begin 549 Result := DoubleQuote + aString + DoubleQuote; 550 end; 551 552 452 553 END. -
trunk/NewView/unittests/StringUtilsUnitTests.pas
r82 r102 811 811 END; 812 812 813 813 814 // ------------------------------------------------------------------- 814 815 815 816 817 PROCEDURE testStrLeftWithout_Empty; 818 VAR 819 tmpResult : String; 820 BEGIN 821 tmpResult := StrLeftWithout('', 4); 822 823 assertEqualsString('testStrLeftWithout_Empty', '', tmpResult); 824 END; 825 826 827 PROCEDURE testStrLeftWithout_ToBig; 828 VAR 829 tmpResult : String; 830 BEGIN 831 tmpResult := StrLeftWithout('ab', 4); 832 833 assertEqualsString('testStrLeftWithout_ToBig', '', tmpResult); 834 END; 835 836 837 PROCEDURE testStrLeftWithout_Negative; 838 VAR 839 tmpResult : String; 840 BEGIN 841 tmpResult := StrLeftWithout('ab', -1); 842 843 assertEqualsString('testStrLeftWithout_Negative', 'ab', tmpResult); 844 END; 845 846 847 PROCEDURE testStrLeftWithout_All; 848 VAR 849 tmpResult : String; 850 BEGIN 851 tmpResult := StrLeftWithout('abdefg', 6); 852 853 assertEqualsString('testStrLeftWithout_All', '', tmpResult); 854 END; 855 856 857 PROCEDURE testStrLeftWithout; 858 VAR 859 tmpResult : String; 860 BEGIN 861 tmpResult := StrLeftWithout('abdefg', 3); 862 863 assertEqualsString('testStrLeftWithout', 'abd', tmpResult); 864 END; 865 866 867 // ------------------------------------------------------------------- 868 869 870 PROCEDURE testStrLeftUntil_Empty; 871 VAR 872 tmpResult : String; 873 BEGIN 874 tmpResult := StrLeftUntil('', ['b', 'x']); 875 876 assertEqualsString('testStrLeftUntil_Empty', '', tmpResult); 877 END; 878 879 880 PROCEDURE testStrLeftUntil_Empty_EmptyDelimiterSet; 881 VAR 882 tmpResult : String; 883 BEGIN 884 tmpResult := StrLeftUntil('', []); 885 886 assertEqualsString('testStrLeftUntil_Empty_EmptyDelimiterSet', '', tmpResult); 887 END; 888 889 890 PROCEDURE testStrLeftUntil_EmptyDelimiterSet; 891 VAR 892 tmpResult : String; 893 BEGIN 894 tmpResult := StrLeftUntil('abc', []); 895 896 assertEqualsString('testStrLeftUntil_EmptyDelimiterSet', 'abc', tmpResult); 897 END; 898 899 900 PROCEDURE testStrLeftUntil_FirstIsDelimiter; 901 VAR 902 tmpResult : String; 903 BEGIN 904 tmpResult := StrLeftUntil('abc', ['a']); 905 906 assertEqualsString('testStrLeftUntil_FirstIsDelimiter', '', tmpResult); 907 END; 908 909 910 PROCEDURE testStrLeftUntil_LastIsDelimiter; 911 VAR 912 tmpResult : String; 913 BEGIN 914 tmpResult := StrLeftUntil('abc', ['c']); 915 916 assertEqualsString('testStrLeftUntil_LastIsDelimiter', 'ab', tmpResult); 917 END; 918 919 920 PROCEDURE testStrLeftUntil_UnusedDelimiter; 921 VAR 922 tmpResult : String; 923 BEGIN 924 tmpResult := StrLeftUntil('abc', ['x']); 925 926 assertEqualsString('testStrLeftUntil_UnusedDelimiter', 'abc', tmpResult); 927 END; 928 929 930 PROCEDURE testStrLeftUntil; 931 VAR 932 tmpResult : String; 933 BEGIN 934 tmpResult := StrLeftUntil('abcx yz do', ['d', ' ']); 935 936 assertEqualsString('testStrLeftUntil', 'abcx', tmpResult); 937 END; 938 939 940 // ------------------------------------------------------------------- 941 942 943 PROCEDURE testStrStartsWith_BothEmpty; 944 VAR 945 tmpResult : Boolean; 946 BEGIN 947 tmpResult := StrStartsWith('', ''); 948 949 assertTrue('testStrStartsWith_BothEmpty', tmpResult); 950 END; 951 952 953 PROCEDURE testStrStartsWith_StringEmpty; 954 VAR 955 tmpResult : Boolean; 956 BEGIN 957 tmpResult := StrStartsWith('', 'end'); 958 959 assertFalse('testStrStartsWith_StringEmpty', tmpResult); 960 END; 961 962 963 PROCEDURE testStrStartsWith_MatchEmpty; 964 VAR 965 tmpResult : Boolean; 966 BEGIN 967 tmpResult := StrStartsWith('test', ''); 968 969 assertTrue('testStrStartsWith_MatchEmpty', tmpResult); 970 END; 971 972 973 PROCEDURE testStrStartsWith_StringToShort; 974 VAR 975 tmpResult : Boolean; 976 BEGIN 977 tmpResult := StrStartsWith('test', 'test1'); 978 979 assertFalse('testStrStartsWith_StringToShort', tmpResult); 980 END; 981 982 983 PROCEDURE testStrStartsWith_StringEqualLength; 984 VAR 985 tmpResult : Boolean; 986 BEGIN 987 tmpResult := StrStartsWith('test', 'best'); 988 989 assertFalse('testStrStartsWith_StringEqualLength', tmpResult); 990 END; 991 992 993 PROCEDURE testStrStartsWith_StringEqualLengthMatch; 994 VAR 995 tmpResult : Boolean; 996 BEGIN 997 tmpResult := StrStartsWith('test', 'test'); 998 999 assertTrue('testStrStartsWith_StringEqualLengthMatch', tmpResult); 1000 END; 1001 1002 1003 PROCEDURE testStrStartsWith_StringMatch; 1004 VAR 1005 tmpResult : Boolean; 1006 BEGIN 1007 tmpResult := StrStartsWith('this is a simple test', 'this'); 1008 1009 assertTrue('testStrStartsWith_StringMatch', tmpResult); 1010 END; 1011 1012 1013 PROCEDURE testStrStartsWith_StringMatchCaseSensitive; 1014 VAR 1015 tmpResult : Boolean; 1016 BEGIN 1017 tmpResult := StrStartsWith('This is a simple test', 'tHis'); 1018 1019 assertFalse('testStrStartsWith_StringMatchCaseSensitive', tmpResult); 1020 END; 1021 1022 1023 // ------------------------------------------------------------------- 1024 1025 1026 PROCEDURE testStrStartsWithIgnoringCase_BothEmpty; 1027 VAR 1028 tmpResult : Boolean; 1029 BEGIN 1030 tmpResult := StrStartsWithIgnoringCase('', ''); 1031 1032 assertTrue('testStrStartsWithIgnoringCase_BothEmpty', tmpResult); 1033 END; 1034 1035 1036 PROCEDURE testStrStartsWithIgnoringCase_StringEmpty; 1037 VAR 1038 tmpResult : Boolean; 1039 BEGIN 1040 tmpResult := StrStartsWithIgnoringCase('', 'end'); 1041 1042 assertFalse('testStrStartsWithIgnoringCase_StringEmpty', tmpResult); 1043 END; 1044 1045 1046 PROCEDURE testStrStartsWithIgnoringCase_MatchEmpty; 1047 VAR 1048 tmpResult : Boolean; 1049 BEGIN 1050 tmpResult := StrStartsWithIgnoringCase('test', ''); 1051 1052 assertTrue('testStrStartsWithIgnoringCase_MatchEmpty', tmpResult); 1053 END; 1054 1055 1056 PROCEDURE testStrStartsWithIgnoringCase_StringToShort; 1057 VAR 1058 tmpResult : Boolean; 1059 BEGIN 1060 tmpResult := StrStartsWithIgnoringCase('test', 'test1'); 1061 1062 assertFalse('testStrStartsWithIgnoringCase_StringToShort', tmpResult); 1063 END; 1064 1065 1066 PROCEDURE testStrStartsWithIgnoringCase_StringEqualLength; 1067 VAR 1068 tmpResult : Boolean; 1069 BEGIN 1070 tmpResult := StrStartsWithIgnoringCase('test', 'best'); 1071 1072 assertFalse('testStrStartsWithIgnoringCase_StringEqualLength', tmpResult); 1073 END; 1074 1075 1076 PROCEDURE testStrStartsWithIgnoringCase_StringEqualLengthMatch; 1077 VAR 1078 tmpResult : Boolean; 1079 BEGIN 1080 tmpResult := StrStartsWithIgnoringCase('test', 'test'); 1081 1082 assertTrue('testStrStartsWithIgnoringCase_StringEqualLengthMatch', tmpResult); 1083 END; 1084 1085 1086 PROCEDURE testStrStartsWithIgnoringCase_StringMatch; 1087 VAR 1088 tmpResult : Boolean; 1089 BEGIN 1090 tmpResult := StrStartsWithIgnoringCase('This is a simple test', 'This'); 1091 1092 assertTrue('testStrStartsWithIgnoringCase_StringMatch', tmpResult); 1093 END; 1094 1095 1096 PROCEDURE testStrStartsWithIgnoringCase_StringMatchCaseInSensitive; 1097 VAR 1098 tmpResult : Boolean; 1099 BEGIN 1100 tmpResult := StrStartsWithIgnoringCase('ThiS is a simple test', 'THis'); 1101 1102 assertTrue('testStrStartsWithIgnoringCase_StringMatchCaseSensitive', tmpResult); 1103 END; 1104 1105 1106 // ------------------------------------------------------------------- 1107 1108 816 1109 PROCEDURE testStrEndsWith_BothEmpty; 817 1110 VAR … … 1022 1315 assertEqualsString('testBoolToStr_false', 'False', tmpResult); 1023 1316 END; 1317 1318 // ---------------------------------------------------------- 1319 1320 1321 PROCEDURE testStrInDoubleQuotes_Empty; 1322 VAR 1323 tmpResult : String; 1324 BEGIN 1325 tmpResult := StrInDoubleQuotes(''); 1326 1327 assertEqualsString('testStrInDoubleQuotes_Empty', '""', tmpResult); 1328 END; 1329 1330 1331 PROCEDURE testStrInDoubleQuotes; 1332 VAR 1333 tmpResult : String; 1334 BEGIN 1335 tmpResult := StrInDoubleQuotes('abc'); 1336 1337 assertEqualsString('testStrInDoubleQuotes', '"abc"', tmpResult); 1338 END; 1339 1024 1340 1025 1341 // ---------------------------------------------------------- … … 1101 1417 result.add(@testStrLeft_Part); 1102 1418 1419 result.add(@testStrLeftWithout_Empty); 1420 result.add(@testStrLeftWithout_ToBig); 1421 result.add(@testStrLeftWithout_Negative); 1422 result.add(@testStrLeftWithout_All); 1423 result.add(@testStrLeftWithout); 1424 1425 result.add(@testStrLeftUntil_Empty); 1426 result.add(@testStrLeftUntil_Empty_EmptyDelimiterSet); 1427 result.add(@testStrLeftUntil_EmptyDelimiterSet); 1428 result.add(@testStrLeftUntil_FirstIsDelimiter); 1429 result.add(@testStrLeftUntil_LastIsDelimiter); 1430 result.add(@testStrLeftUntil_UnusedDelimiter); 1431 result.add(@testStrLeftUntil); 1432 1433 result.add(@testStrStartsWith_BothEmpty); 1434 result.add(@testStrStartsWith_StringEmpty); 1435 result.add(@testStrStartsWith_MatchEmpty); 1436 result.add(@testStrStartsWith_StringToShort); 1437 result.add(@testStrStartsWith_StringEqualLength); 1438 result.add(@testStrStartsWith_StringEqualLengthMatch); 1439 result.add(@testStrStartsWith_StringMatch); 1440 result.add(@testStrStartsWith_StringMatchCaseSensitive); 1441 1442 result.add(@testStrStartsWithIgnoringCase_BothEmpty); 1443 result.add(@testStrStartsWithIgnoringCase_StringEmpty); 1444 result.add(@testStrStartsWithIgnoringCase_MatchEmpty); 1445 result.add(@testStrStartsWithIgnoringCase_StringToShort); 1446 result.add(@testStrStartsWithIgnoringCase_StringEqualLength); 1447 result.add(@testStrStartsWithIgnoringCase_StringEqualLengthMatch); 1448 result.add(@testStrStartsWithIgnoringCase_StringMatch); 1449 result.add(@testStrStartsWithIgnoringCase_StringMatchCaseInSensitive); 1450 1103 1451 result.add(@testStrEndsWith_BothEmpty); 1104 1452 result.add(@testStrEndsWith_StringEmpty); … … 1125 1473 result.add(@testBoolToStr_true); 1126 1474 result.add(@testBoolToStr_false); 1475 1476 result.add(@testStrInDoubleQuotes_Empty); 1477 result.add(@testStrInDoubleQuotes); 1127 1478 END; 1128 1479
Note:
See TracChangeset
for help on using the changeset viewer.