Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2009, 15:05   #1
apocalypce
Пользователь
 
Аватар для apocalypce
 
Регистрация: 08.08.2009
Сообщений: 65
По умолчанию Генерация текста

Здравствуйте уважаемые посетители форума.

Вот сижу за компом и пытаюсь написать программу которая генерирует то, что написанно в Memo. А смысл такой: например создаеться описание в виде:
Цитата:
programmersforum.ru - {лучший|классный|восхитительный} форум
После нажатия на кнопку генерация должно произойти следующее:
Цитата:
1. programmersforum.ru - лучший форум
2. programmersforum.ru - классный форум
3. programmersforum.ru - восхитительный форум
т.е. сгенерировать все возможные варианты.
Error 404: Подпись not found
apocalypce вне форума Ответить с цитированием
Старый 08.08.2009, 15:41   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

готовых решений я лично не знаю.
но самому такое сделать несложно.
Сначала определитесь с правилами вашего макроязыка (т.е. какие конструкции являются допустимыми), дальше пишите парсинг. для приведённого вами примера как только встречаем фигурную скобку - выбираем в некую структуру (ну пусть будет TStringList) все возможные варианты. потом в цикле по этой структуре генерим варианты и вставляем их вместо {...} скобки...
Хуже, если внутри фигурных скобок, в качестве одного из вариантов, тоже может быть подставка... но и это решаемо...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.08.2009, 09:38   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот парсер твоей хвальбы. К строкам в Мемо в начало добавишь в цикле
Код:
var e,s:string;
begin
 s:='programmersforum.ru - {лучший|классный|восхитительный} форум';
 e:=copy(s,1,pos('}',s)-1);
 e:=copy(e,pos('{',e)+1,length(e));
 Memo1.Lines.Delimiter:='|';
 Memo1.Lines.DelimitedText:=e;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2009, 10:45   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Решение Стилета быстрый способ, но по мере добавления новых возможностей, придется попыхтеть. Лучше сразу определи структуру (класс, динамический массив, запись и пр.), подготовь ряд процедур и функций по обслуживанию (добавление нового элемента - обалденный, удаление и пр). Получиться небольшое API, опираясь на которое уже возможно решать большой круг задач.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.08.2009, 13:01   #5
apocalypce
Пользователь
 
Аватар для apocalypce
 
Регистрация: 08.08.2009
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот парсер твоей хвальбы. К строкам в Мемо в начало добавишь в цикле
Код:
var e,s:string;
begin
 s:='programmersforum.ru - {лучший|классный|восхитительный} форум';
 e:=copy(s,1,pos('}',s)-1);
 e:=copy(e,pos('{',e)+1,length(e));
 Memo1.Lines.Delimiter:='|';
 Memo1.Lines.DelimitedText:=e;
end;
спасибо а еще вот так можно:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s, a, b, c : string;
 str : TStringList;
 i, t, p1, p2 : integer;
begin
 memo2.Clear;
 str := TStringList.create;
  for i:=0 to memo1.Lines.Count-1 do
   begin
    s:=memo1.Lines.Strings[i]; 
    p1:=pos('{', s);
    p2:=pos('}', s);
     if (p1<>0) and (p2<>0) then
      a:=copy(s, 1, p1-1);
      c:=copy(s, p2+1, MaxInt);
      b:=copy(s, p1+1, p2-1-p1);
      str.text := stringReplace(b, '|', #13#10, [rfReplaceAll]);
       for t:=0 to str.Count-1 do
        memo2.Lines.Add(inttostr(t+1) + '. '+ a + str[t] + c);   
  end;
 str.free
end;
Error 404: Подпись not found

Последний раз редактировалось Stilet; 11.08.2009 в 09:15.
apocalypce вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных... Яр|/||< (^_^) Общие вопросы Delphi 2 22.06.2009 21:33
Генерация заголовка MAcK Фриланс 3 06.11.2008 11:59
Генерация звука N!ckeL Общие вопросы Delphi 1 19.06.2008 09:19
Генерация текста по шаблону PUH Помощь студентам 6 16.05.2008 07:40
генерация паролей ozhjog Общие вопросы Delphi 3 02.07.2007 08:20