rendered paste bodyfunction BinHex2Str(sHex: String): String;
var
s, t: Integer;
function MakeChar(cHexHi: Char; cHexLo: Char): Char;
var
nByteHi,
nByteLo: Byte;
nByte: Byte;
begin
if cHexHi >= 'A' then
nByteHi := 10 + Ord(cHexHi) - Ord('A')
else
nByteHi := 0 + Ord(cHexHi) - Ord('0');
if cHexLo >= 'A' then
nByteLo := 10 + Ord(cHexLo) - Ord('A')
else
nByteLo := 0 + Ord(cHexLo) - Ord('0');
nByte := (nByteHi shl 4) or nByteLo;
Result := Char(nByte);
end;
begin
sHex := UpperCase(sHex);
SetLength(Result, Length(sHex) div 2);
s := 1;
t := 1;
repeat
Result[t] := MakeChar(sHex[s], sHex[s + 1]);
Inc(s, 2);
Inc(t);
until s > Length(sHex);
end;