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

  #2  
Старый 12.06.2010, 17:54
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
С нами: 9227388

Репутация: 180
По умолчанию

Как всегда, на билдере. Не нравится мне синтаксис делфи =)
PHP код:
String sMacros = "";
TStringList* MacrosList = new TStringList;

// если StrictDelimiter == false, пробел тоже будет считаться разделителем
MacrosList->StrictDelimiter = true;
// указываем нужный разделитель
MacrosList->Delimiter = '|';
//пока макросы есть в сообщении выполняем цикл
while(sMsg.Pos("{") && sMsg.Pos("}"))
{
    
// записываем первый в сообщении макрос в переменную sMacros
    
sMacros = sMsg;
    
sMacros.Delete(1, sMacros.Pos("{"));
    
sMacros.SetLength(sMacros.Pos("}") - 1);
    
// разбиваем макрос на строки (одна строка - один вариант текста)
    
MacrosList->DelimitedText = sMacros;
    
// выбираем случайный вариант текста
    
sMacros = MacrosList->Strings[Random(MacrosList->Count)];
    
// заменяем в сообщении текст макроса на выбранный вариант
    
sMsg = sMsg.SubString(1, sMsg.Pos("{") - 1) +
            
sMacros +
            
sMsg.SubString(    sMsg.Pos("}") + 1,
                            
sMsg.Length() - sMsg.Pos("}"));
} 
p.s.: про Randomize не забудь

Последний раз редактировалось M_script_; 12.06.2010 в 17:57..
 
Ответить с цитированием