ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помогите с макросами
  #1  
Старый 12.06.2010, 16:53
Аватар для aydar
aydar
Участник форума
Регистрация: 12.11.2009
Сообщений: 160
Провел на форуме:
568182

Репутация: 11
По умолчанию Помогите с макросами

Ребят нужна помощь с макросами

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

например вот так
Цитата:
{Хай|Привет} [nick]{.|!| | } Как тебе Аватар 2 ?! {Мне очень понравился!)))|Нам понравился)} {Продолжение просто супер!|Классное продолжение первой части } Если{ тоже|} хочешь{ посмотреть|} то скачай в {HD|DVD} - http://ne-afisha.com/index.php?rid=1681&p=2700 Потом {расскажешь впечатления!!!|обязательно расскажешь понравилось или нет} { |^_^ ^_^ ^_^| } [my_nick]|||{Хай|Привет} [nick]{.|!| } Я вот увидел {вчера|на днях} {мультик|мульт} Валл-и 2 Большая уборка, думаю, когда он вышел то. {Взял скачал|Скачал вчера}, прикольный {мультик|мульт}))) Глянь тоже! {||^_^} {Делюсь ссылкой|Вот ссылка|Держи ссылку} - http://ne-afisha.com/index.php?rid=1681&p=2703
как это релизовать на делфи, знаю только что надо записать в стринглист весь нашь текст
 
Ответить с цитированием

  #2  
Старый 12.06.2010, 17:54
Аватар для M_script_
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Как всегда, на билдере. Не нравится мне синтаксис делфи =)
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 не забудь

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

  #3  
Старый 12.06.2010, 22:24
Аватар для aydar
aydar
Участник форума
Регистрация: 12.11.2009
Сообщений: 160
Провел на форуме:
568182

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

вот так?

Цитата:
procedure TForm2.Button2Click(Sender: TObject);
var
sMacros,sMsg: String;
MacrosList: TStringList;
begin
sMacros := '';
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;
end;
 
Ответить с цитированием

  #4  
Старый 13.06.2010, 00:10
Аватар для M_script_
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

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

Цитата:
Сообщение от aydar  
вот так?
Вроде да. Если работает, значит все правильно.
 
Ответить с цитированием

  #5  
Старый 13.06.2010, 01:45
Аватар для aydar
aydar
Участник форума
Регистрация: 12.11.2009
Сообщений: 160
Провел на форуме:
568182

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

вот именно, что ниче не выводит
вставлял этот текст

Цитата:
{Хай|Привет} [nick]{.|!| | } Как тебе Аватар 2 ?! {Мне очень понравился!)))|Нам понравился)} {Продолжение просто супер!|Классное продолжение первой части } Если{ тоже|} хочешь{ посмотреть|} то скачай в {HD|DVD} - http://ne-afisha.com/index.php?rid=1681&p=2700 Потом {расскажешь впечатления!!!|обязательно расскажешь понравилось или нет} { |^_^ ^_^ ^_^| } [my_nick]|||{Хай|Привет} [nick]{.|!| } Я вот увидел {вчера|на днях} {мультик|мульт} Валл-и 2 Большая уборка, думаю, когда он вышел то. {Взял скачал|Скачал вчера}, прикольный {мультик|мульт}))) Глянь тоже! {||^_^} {Делюсь ссылкой|Вот ссылка|Держи ссылку} - http://ne-afisha.com/index.php?rid=1681&p=2703

Последний раз редактировалось aydar; 13.06.2010 в 01:54..
 
Ответить с цитированием

  #6  
Старый 13.06.2010, 03:05
Аватар для M_script_
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;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народ!!! Помогите НАМ!!! Помогите покончить с беспределом!!! Monah Чаты 7 24.08.2005 07:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ