Changeset 390 for trunk/Library
- Timestamp:
- Apr 30, 2016, 7:49:57 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Library/StringUtilsUnit.pas
r388 r390 2 2 3 3 // NewView - a new OS/2 Help Viewer 4 // Copyright 2006-2007 Ronald Brill (rbri at rbri dot de) 4 // Copyright 2003-2006 Aaron Lawrence 5 // Copyright 2006-2009 Ronald Brill (rbri at rbri dot de) 5 6 // This software is released under the GNU Public License - see readme.txt 6 7 … … 106 107 Function LongWordToStr(const aLongWord: LongWord) : String; 107 108 108 Function BoolToStr(const aBoolean : boolean ): string; 109 Function BoolToStr(const aBoolean : Boolean ): String; 110 111 // Converts a hex string to a longint 112 // May be upper or lower case 113 // Does not allow a sign 114 // Is not forgiving as StrToInt: all characters 115 // must be valid hex chars. 116 Function HexStrToLongInt(const aString : String ): longint; 109 117 110 118 // Returns aString enclosed in single quotes … … 116 124 // Extract all fields in a String delimited by whitespace (blank or tab). 117 125 // use double quotes if you need blanks in the strings 118 Procedure StrExtractStringsQuoted(Var aResult: TStrings; const aReceiver: String ); 119 126 Procedure StrExtractStringsQuoted(Var aResult: TStrings; const aReceiver: String); 120 127 121 128 // returns the position of aPart in aString 122 129 // case insensitive 123 Function CaseInsensitivePos(const aPart: String; const aString: String ): longint;130 Function CaseInsensitivePos(const aPart: String; const aString: String) : longint; 124 131 125 132 // Finds the last position of aChar within aString. Returns zero if no match 126 Function LastPosOfChar(const aChar: char; const aString: String): longint; 133 Function LastPosOfChar(const aChar: char; const aString: String) : longint; 134 135 136 // Substitutes all occurences of given character with the replace char 137 Procedure SubstituteAllOccurencesOfChar(var aReceiver: String; const aSearchChar: Char; const aReplaceChar: Char); 127 138 128 139 … … 668 679 669 680 681 // Hex conversion: sheer extravagance. Conversion from 682 // a hex digit char to int is done by creating a lookup table 683 // in advance. 684 var 685 MapHexDigitToInt: array[Chr(0) .. Chr(255)] of longint; 686 687 procedure InitHexDigitMap; 688 var 689 tmpChar : char; 690 tmpIntValue : longint; 691 begin 692 for tmpChar := Chr(0) to Chr(255) do 693 begin 694 tmpIntValue := -1; 695 if ( tmpChar >= '0') and (tmpChar <= '9') then 696 begin 697 tmpIntValue := Ord(tmpChar) - Ord('0'); 698 end; 699 700 if ( Upcase(tmpChar) >= 'A') and (Upcase(tmpChar) <= 'F') then 701 begin 702 tmpIntValue := 10 + Ord(Upcase(tmpChar)) - Ord('A'); 703 end; 704 705 MapHexDigitToInt[tmpChar] := tmpIntValue; 706 end; 707 end; 708 709 710 Function HexDigitToInt(const aString : String; const aPosition : integer) : longint; 711 begin 712 Result := MapHexDigitToInt[aString[aPosition]]; 713 if Result = -1 then 714 begin 715 raise EConvertError.Create('Invalid hex char: ''' + aString[aPosition] + ''' in hex string ''' + aString +'''.' ); 716 end 717 end; 718 719 720 Function HexStrToLongInt(const aString : String) : longint; 721 var 722 i: integer; 723 begin 724 if Length(aString) = 0 then 725 begin 726 raise EConvertError.Create('No chars in hex string'); 727 end; 728 729 Result := 0; 730 for i:= 1 to Length(aString) do 731 begin 732 Result := Result shl 4; 733 inc(Result, HexDigitToInt(aString, i)); 734 end; 735 end; 736 670 737 Function StrInSingleQuotes(const aString : String) : String; 671 738 begin … … 680 747 681 748 682 Procedure StrExtractStringsQuoted(Var aResult: TStrings; const aReceiver: String 749 Procedure StrExtractStringsQuoted(Var aResult: TStrings; const aReceiver: String); 683 750 Var 684 751 tmpState : (WHITESPACE, INSIDE, START_QUOTE, INSIDE_QUOTED, INSIDE_QUOTED_START_QUOTE); … … 939 1006 end; 940 1007 1008 1009 Procedure SubstituteAllOccurencesOfChar(var aReceiver: String; const aSearchChar: Char; const aReplaceChar: Char ); 1010 var 1011 i : longint; 1012 begin 1013 for i :=1 to length(aReceiver) do 1014 begin 1015 if aReceiver[i] = aSearchChar then 1016 begin 1017 aReceiver[i] := aReplaceChar; 1018 end 1019 end 1020 end; 1021 1022 941 1023 // -------------------- 942 1024 // ---- AnsiString ---- … … 1096 1178 end; 1097 1179 1098 END. 1180 1181 Initialization 1182 InitHexDigitMap; 1183 End.
Note:
See TracChangeset
for help on using the changeset viewer.