On 8/20/2010 5:01 AM, silvioprog wrote:
 Em 19/08/2010 17:26, bobby escreveu:
Hi,

I have a function for increasing HEX values, based on string manipulations, not on conversion to integer and back.
Would that be of any help?

bobby

Hi bobby,

Would you show me the function?


Hi,

here it is:

function incHexStr(inHexStr: string): string;
var
  HexMap: string;
  i: integer;
  j: integer;
  s: string;
  carry: integer;
begin
  result := '';
  s := '';
  carry := 0;
  HexMap := '0123456789abcdef0123456789abcdef';

  for j := 1 to 16 do
    if AnsiLowerCase(inHexStr[length(inHexStr)]) = HexMap[j] then
    begin
      if j > 15 then carry := 1;
      inHexStr[length(inHexStr)] := HexMap[(j + 1)];
      break;
    end;
  if carry = 1 then
    for i := (length(inHexStr) - 1) downto 1 do
    begin
      if carry = 1 then
        for j := 1 to 16 do
          if AnsiLowerCase(inHexStr[i]) = HexMap[j] then
          begin
            carry := 0;
            if j > 15 then carry := 1;
            inHexStr[i] := HexMap[(j + 1)];
            break;
          end;
    end;
  if carry = 1 then inHexStr := '01' + inHexStr;
  result := inHexStr;
end;


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to