можно найти код для получения комбинаций, навроде [1,2][1,3]...
и увеличить буквы по этим индексам,
ещё есть функция product (
исодник на си при клике), можно оттуда скопировать описание, может что и найдётся
---
написал что-то вроде этой функции product
Код:
join(product([['a','A'],['b','B']])[0]) = 'AB'
join(product([['a','A'],['b','B']])[2*2 - 1]) = 'ab'
function product(given: array of smy): aamy;
var givens: aamy; i, j, len, count, step, current_count: integer;
begin
count := length(given);
setlength(givens, length(given));
for i := 0 to high(givens) do
givens[i] := to_array(given[i]);
len := 1;
for i := 0 to high(givens) do
len := len * length(givens[i]);
setlength(result, len);
for i := 0 to high(result) do
setlength(result[i], count);
step := 1;
for j := 0 to count - 1 do
begin
current_count := length(givens[j]);
for i := 0 to len - 1 do
result[i][j] := givens[j][(i div step) mod current_count];
step := step * length(givens[j]);
end;
for i := 0 to high(givens) do
setlength(givens[i], 0);
setlength(givens, 0);
end;