Показать сообщение отдельно
  #8  
Старый 20.12.2014, 20:56
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Забавная задачка. Так устроит?
Код:
procedure TForm28.Button1Click(Sender: TObject);
var
  i,j: Integer;
  CharSet: String;
  SL: TStringList;

procedure Eval(S: String; Level: Integer);
var
  i: Integer;
begin
 if Level > SL.Count - 1 then Exit;
 for i := 1 to Length(SL.Strings[Level])
 do begin
    Eval(S + SL.Strings[Level][i], Level+1);
    if Level = SL.Count - 1
    then Memo1.Lines.Add(S + SL.Strings[Level][i]);
    end;
end;

begin
 Memo1.Clear;
 SL := TStringList.Create;
 SL.Delimiter := '['; SL.DelimitedText := Edit1.Text;
 SL.Delimiter := ']'; SL.DelimitedText := SL.Text;
 for j := 0 to SL.Count - 1
 do begin
    i := 1;
    CharSet := '';
    while i <= Length(SL.Strings[j])
    do begin
       if SL.Strings[j][i] in ['A'..'Z']
       then CharSet := CharSet + SL.Strings[j][i]
       else begin
            Inc(i);
            while SL.Strings[j][i] <> CharSet[Length(CharSet)]
            do CharSet := CharSet + Succ(CharSet[Length(CharSet)]);
            end;
       Inc(i);
       end;
    SL.Strings[j] := CharSet;
    end;
 Eval('', 0);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием