Помогите с макросами

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by aydar, 12 Jun 2010.

  1. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Ребят нужна помощь с макросами

    {один|два|три}- выбирается одно из слов или фраз. Думаю все знают.
    ||| - разделяет сообщение на 2. Выбирает и отправляет одну из указанных частей.

    например вот так
    как это релизовать на делфи, знаю только что надо записать в стринглист весь нашь текст
     
  2. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Как всегда, на билдере. Не нравится мне синтаксис делфи =)
    PHP:
    String sMacros "";
    TStringListMacrosList = new TStringList;

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

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    вот так?

     
  4. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Вроде да. Если работает, значит все правильно.
     
  5. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    вот именно, что ниче не выводит
    вставлял этот текст

     
    #5 aydar, 13 Jun 2010
    Last edited: 13 Jun 2010
  6. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Значит неправильно сделал.
    В мемо1 - твой исходный текст.
    После нажатия кнопки в мемо2 будет добавляться обработанный текст.

    Красным отмечено то, что было неправильно.
    Зеленым - то, чего не хватало.
     
    1 person likes this.