Changeset 198 for trunk/Library/StringUtilsUnit.pas
- Timestamp:
- Jun 7, 2007, 8:53:05 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Library/StringUtilsUnit.pas
r172 r198 106 106 Function LongWordToStr(const aLongWord: LongWord) : String; 107 107 108 Function BoolToStr(const aBoolean : boolean ): string; 108 Function BoolToStr(const aBoolean : Boolean ): String; 109 110 // Converts a hex string to a longint 111 // May be upper or lower case 112 // Does not allow a sign 113 // Is not forgiving as StrToInt: all characters 114 // must be valid hex chars. 115 Function HexStrToLongInt(const aString : String ): longint; 109 116 110 117 // Returns aString enclosed in single quotes … … 118 125 Procedure StrExtractStringsQuoted(Var aResult: TStrings; const aReceiver: String ); 119 126 120 121 127 // returns the position of aPart in aString 122 128 // case insensitive … … 125 131 // Finds the last position of aChar within aString. Returns zero if no match 126 132 Function LastPosOfChar(const aChar: char; const aString: String): longint; 133 134 135 // Substitutes all occurences of given character with the replace char 136 Procedure SubstituteAllOccurencesOfChar(var aReceiver: String; const aSearchChar: Char; const aReplaceChar: Char ); 127 137 128 138 … … 668 678 669 679 680 // Hex conversion: sheer extravagance. Conversion from 681 // a hex digit char to int is done by creating a lookup table 682 // in advance. 683 var 684 MapHexDigitToInt: array[Chr(0) .. Chr(255)] of longint; 685 686 procedure InitHexDigitMap; 687 var 688 tmpChar : char; 689 tmpIntValue : longint; 690 begin 691 for tmpChar := Chr(0) to Chr(255) do 692 begin 693 tmpIntValue := -1; 694 if ( tmpChar >= '0') and (tmpChar <= '9') then 695 begin 696 tmpIntValue := Ord(tmpChar) - Ord('0'); 697 end; 698 699 if ( Upcase(tmpChar) >= 'A') and (Upcase(tmpChar) <= 'F') then 700 begin 701 tmpIntValue := 10 + Ord(Upcase(tmpChar)) - Ord('A'); 702 end; 703 704 MapHexDigitToInt[tmpChar] := tmpIntValue; 705 end; 706 end; 707 708 709 Function HexDigitToInt(const aString : String; const aPosition : integer) : longint; 710 begin 711 Result := MapHexDigitToInt[aString[aPosition]]; 712 if Result = -1 then 713 begin 714 raise EConvertError.Create('Invalid hex char: ''' + aString[aPosition] + ''' in hex string ''' + aString +'''.' ); 715 end 716 end; 717 718 719 Function HexStrToLongInt(const aString : String) : longint; 720 var 721 i: integer; 722 begin 723 if Length(aString) = 0 then 724 begin 725 raise EConvertError.Create('No chars in hex string'); 726 end; 727 728 Result := 0; 729 for i:= 1 to Length(aString) do 730 begin 731 Result := Result shl 4; 732 inc(Result, HexDigitToInt(aString, i)); 733 end; 734 end; 735 670 736 Function StrInSingleQuotes(const aString : String) : String; 671 737 begin … … 939 1005 end; 940 1006 1007 1008 Procedure SubstituteAllOccurencesOfChar(var aReceiver: String; const aSearchChar: Char; const aReplaceChar: Char ); 1009 var 1010 i : longint; 1011 begin 1012 for i :=1 to length(aReceiver) do 1013 begin 1014 if aReceiver[i] = aSearchChar then 1015 begin 1016 aReceiver[i] := aReplaceChar; 1017 end 1018 end 1019 end; 1020 1021 941 1022 // -------------------- 942 1023 // ---- AnsiString ---- … … 1096 1177 end; 1097 1178 1098 END. 1179 1180 Initialization 1181 InitHexDigitMap; 1182 End.
Note:
See TracChangeset
for help on using the changeset viewer.