home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / vbasic / Data / Utils / XZipComp.exe / XceedEncryption.Cab / F112950_unUtility.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-07-04  |  1.4 KB  |  57 lines

  1. unit unUtility;
  2.  
  3. interface
  4.   procedure BinaryToHex( vaSource : OleVariant;
  5.                          var sDestination : String );
  6.   procedure HexToBinary( sSource : String;
  7.                          var vaDestination : OleVariant );
  8.  
  9. implementation
  10.  
  11. uses
  12.   Sysutils;
  13.  
  14. procedure BinaryToHex( vaSource : OleVariant;
  15.                        var sDestination : String );
  16. var
  17.   lBufferLen : Integer;
  18.   pcData     : PChar;
  19.   I          : Integer;
  20. begin
  21.   sDestination := '';
  22.   if ( not VarIsEmpty( vaSource ) ) then
  23.   begin
  24.     lBufferLen := VarArrayHighBound( vaSource, 1 ) -
  25.                   VarArrayLowBound( vaSource, 1 ) + 1;
  26.  
  27.     pcData := VarArrayLock( vaSource );
  28.     For I := 0 To lBufferLen - 1 do
  29.     begin
  30.       sDestination := sDestination + IntToHex( Ord( pcData[I] ), 2 );
  31.     end;
  32.     VarArrayUnlock( vaSource );
  33.   end;
  34. end;
  35.  
  36. procedure HexToBinary( sSource : String;
  37.                        var vaDestination : OleVariant );
  38. var
  39.   I           : Integer;
  40.   lSourceSize : Integer;
  41.   pcData      : PChar;
  42. begin
  43.   lSourceSize := Length( sSource );
  44.   vaDestination := VarArrayCreate( [0, ( lSourceSize div 2 ) - 1], varByte );
  45.  
  46.   pcData := VarArrayLock( vaDestination );
  47.  
  48.   for I := 0 to ( lSourceSize div 2 ) - 1 do
  49.   begin
  50.     pcData[i] := Char( StrToInt( '$' + sSource[I*2+1] + sSource[I*2+2] ) );
  51.   end;
  52.  
  53.   VarArrayUnlock( vaDestination );
  54. end;
  55.  
  56. end.
  57.