Показать сообщение отдельно

  #6  
Старый 13.06.2010, 03:05
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

Репутация: 180
Отправить сообщение для M_script_ с помощью ICQ
По умолчанию

Цитата:
Сообщение от aydar  
вот именно, что ниче не выводит
вставлял этот текст
Значит неправильно сделал.
В мемо1 - твой исходный текст.
После нажатия кнопки в мемо2 будет добавляться обработанный текст.

Красным отмечено то, что было неправильно.
Зеленым - то, чего не хватало.
Цитата:
procedure TForm2.Button2Click(Sender: TObject);
var
sMacros,sMsg: String;
MacrosList: TStringList;
begin
sMacros := '';
sMsg := Memo1.Text
MacrosList := TStringList.Create();
MacrosList.Add(memo2.Text);
// если StrictDelimiter = false, пробел тоже будет считаться разделителем
MacrosList.StrictDelimiter := true;
// указываем нужный разделитель
MacrosList.Delimiter := '|';
//пока макросы есть в сообщении выполняем цикл
while (Pos('{', sMsg) <> 0) and (Pos('}', sMsg) <> 0) do
begin
// записываем первый в сообщении макрос в переменную sMacros
sMacros := sMsg;
Delete(sMacros, 1, Pos('{', sMacros));
SetLength(sMacros, Pos('}', sMacros) - 1);
// разбиваем макрос на строки (одна строка - один вариант текста)
MacrosList.DelimitedText := sMacros;
// выбираем случайный вариант текста
sMacros := MacrosList.Strings[Random(MacrosList.Count)];
// заменяем в сообщении текст макроса на выбранный вариант
sMsg := Copy(sMsg, 1, Pos('{', sMsg) - 1) +
sMacros +
Copy(sMsg, Pos('}', sMsg) + 1,
Length(sMsg) - Pos('}', sMsg)) ) ;
end;
memo1.Text:=sMacros;
Memo2.Add(sMsg);
end;