Цитата:
Сообщение от Страдалецъ
Забавная задачка. Так устроит?
Код:
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;
|
Огромное Вам СПАСИБО. Буду тестировать и дорабатывать под свою задачу.