[Lazarus] How can I increment/decrement a alphanumeric value?
silvioprog
silvioprog at gmail.com
Fri Aug 20 05:01:36 CEST 2010
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?
Here's one I received from a friend here in Brazil:
[code]
{$J+}
const
CIncStrChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
{$J-}
function IncStr(const AString: string): string;
var
VCurrChar: PChar;
I, VPos, VBackIndex: Integer;
begin
Result := Copy(AString, 1, Length(AString));
for I := 1 to Length(AString) do
if Pos(AString[I], CIncStrChars) < 1 then
raise Exception.Create('String contains an invalid character');
if Length(AString) < 1 then
begin
Result := CIncStrChars[1];
Exit;
end;
if Length(AString) < 2 then
begin
Result := Succ(AString[1]);
Exit;
end;
VBackIndex := 0;
while True do
begin
VCurrChar := @Result[Length(Result) - VBackIndex];
VPos := Pos(VCurrChar^, CIncStrChars);
if VPos = Length(CIncStrChars) then
begin
VCurrChar^ := CIncStrChars[1];
if (Length(Result) - VBackIndex) <= 1 then
begin
Result := CIncStrChars[2] + Result;
Break;
end
else
begin
Inc(VBackIndex);
Continue;
end;
end
else
begin
VCurrChar^ := CIncStrChars[VPos + 1];
Break;
end;
end;
end;
Author: http://code.google.com/u/kingbizugo/
[/code]
I'm seeing with him to creating the DecStr function.
Thanks bobby. :) (and sorry for my english :p ).
Silvio Clécio
More information about the Lazarus
mailing list