소스 검색

* Remove duplicate HexDigits constants. Fix issue #39462

Michaël Van Canneyt 3 년 전
부모
커밋
f9a6e082ba
2개의 변경된 파일12개의 추가작업 그리고 31개의 파일을 삭제
  1. 11 31
      packages/rtl-objpas/src/inc/strutils.pp
  2. 1 0
      rtl/objpas/sysconst.pp

+ 11 - 31
packages/rtl-objpas/src/inc/strutils.pp

@@ -292,6 +292,8 @@ Function SplitCommandLine(S : UnicodeString) : TUnicodeStringArray;
 
 
 implementation
 implementation
 
 
+uses sysconst; // HexDigits
+
 (*
 (*
   FindMatchesBoyerMooreCaseSensitive
   FindMatchesBoyerMooreCaseSensitive
 
 
@@ -3249,63 +3251,41 @@ begin
    end;
    end;
 end;
 end;
 
 
-// def from delphi.about.com:
-(*
-procedure BinToHex(BinValue, HexValue: PChar; BinBufSize: Integer);
-
-Const
-  HexDigits='0123456789ABCDEF';
-var
-  i : longint;
-begin
-  for i:=0 to binbufsize-1 do
-    begin
-    HexValue[0]:=hexdigits[1+((ord(binvalue^) shr 4))];
-    HexValue[1]:=hexdigits[1+((ord(binvalue^) and 15))];
-    inc(hexvalue,2);
-    inc(binvalue);
-    end;
-end;
-*)
-
 procedure BinToHex(BinValue: PAnsiChar; HexValue: PAnsiChar; BinBufSize: Integer);
 procedure BinToHex(BinValue: PAnsiChar; HexValue: PAnsiChar; BinBufSize: Integer);
-const
-  HexDigits : AnsiString='0123456789ABCDEF';
+
  var
  var
    i : longint;
    i : longint;
  begin
  begin
   for i:=0 to BinBufSize-1 do
   for i:=0 to BinBufSize-1 do
   begin
   begin
-    HexValue[0]:=HexDigits[1+((Ord(BinValue[i]) shr 4))];
-    HexValue[1]:=HexDigits[1+((Ord(BinValue[i]) and 15))];
+    HexValue[0]:=HexDigits[((Ord(BinValue[i]) shr 4))];
+    HexValue[1]:=HexDigits[((Ord(BinValue[i]) and 15))];
     Inc(HexValue,2);
     Inc(HexValue,2);
   end;
   end;
 end;
 end;
 
 
 procedure BinToHex(BinValue: PAnsiChar; HexValue: PWideChar; BinBufSize: Integer);
 procedure BinToHex(BinValue: PAnsiChar; HexValue: PWideChar; BinBufSize: Integer);
-const
-  HexDigits : WideString='0123456789ABCDEF';
+
 var
 var
   i : longint;
   i : longint;
 begin
 begin
   for i:=0 to BinBufSize-1 do
   for i:=0 to BinBufSize-1 do
   begin
   begin
-    HexValue[0]:=HexDigits[1+((Ord(BinValue[i]) shr 4))];
-    HexValue[1]:=HexDigits[1+((Ord(BinValue[i]) and 15))];
+    HexValue[0]:=HexDigitsW[((Ord(BinValue[i]) shr 4))];
+    HexValue[1]:=HexDigitsW[((Ord(BinValue[i]) and 15))];
     Inc(HexValue,2);
     Inc(HexValue,2);
   end;
   end;
 end;
 end;
 
 
 procedure BinToHex(const BinBuffer: TBytes; BinBufOffset: Integer; var HexBuffer: TBytes; HexBufOffset: Integer; Count: Integer);
 procedure BinToHex(const BinBuffer: TBytes; BinBufOffset: Integer; var HexBuffer: TBytes; HexBufOffset: Integer; Count: Integer);
-const
-  HexDigits : String='0123456789ABCDEF';
+
 var
 var
   i : longint;
   i : longint;
 begin
 begin
   for i:=0 to Count-1 do
   for i:=0 to Count-1 do
   begin
   begin
-    HexBuffer[HexBufOffset+2*i+0]:=Byte(HexDigits[1+(BinBuffer[BinBufOffset + i] shr 4)]);
-    HexBuffer[HexBufOffset+2*i+1]:=Byte(HexDigits[1+(BinBuffer[BinBufOffset + i] and 15)]);
+    HexBuffer[HexBufOffset+2*i+0]:=Byte(HexDigits[(BinBuffer[BinBufOffset + i] shr 4)]);
+    HexBuffer[HexBufOffset+2*i+1]:=Byte(HexDigits[(BinBuffer[BinBufOffset + i] and 15)]);
   end;
   end;
 end;
 end;
 
 

+ 1 - 0
rtl/objpas/sysconst.pp

@@ -193,6 +193,7 @@ const
 const
 const
    // Do not localize
    // Do not localize
    HexDigits: array[0..15] of char = '0123456789ABCDEF';
    HexDigits: array[0..15] of char = '0123456789ABCDEF';
+   HexDigitsW: array[0..15] of widechar = '0123456789ABCDEF';
 
 
 Function GetRunError(Errno : Word) : String;
 Function GetRunError(Errno : Word) : String;