Ну, идея в том, что тебе надо просто перебирать последний символ. Если только буквы, то это довольно просто:
В общем, как то так:
Код:
function GetNextValue(var AValue : String) : Boolean;
procedure IncValue(var AValue : String; AIndex : Integer);
var
Ch : Char;
begin
If (AIndex < 1) Or (AIndex > Length(AValue)) Then
Raise Exception.Create('Index out of bounds');
Ch := AValue[AIndex];
If Ch <> 'z' Then AValue[AIndex] := Chr(Ord(Ch) + 1) Else
Begin
AValue[AIndex] := 'a';
If AIndex = 1
Then AValue := 'a' + AValue
Else IncValue(AValue,AIndex-1);
End;
end;
begin
Result := True;
If AValue = '' Then AValue := 'a' Else
If AValue = 'zzzzzzzz' Then Result := False Else
IncValue(AValue,Length(AValue);
end;
Код не проверял. Просто идея.