Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Быстрое удаление излишних пробелов, в т.ч. табуляций и т.п.. Какие есть варианты?

Быстрое удаление излишних пробелов, в т.ч. табуляций и т.п.. Какие есть варианты?
Я
   bolobol
 
19.04.19 - 10:18
Добрый утро!

Необходимо из текста кода убрать излишние пробелы, в т.ч. табуляции и т.п.
Быстрое удаление интересует. Какие известны варианты?

Спасибо!
 
 
   Asmody
 
1 - 19.04.19 - 10:19
Перебрать все подряд не быстро?
   ДенисЧ
 
2 - 19.04.19 - 10:20
СтрЗаменить()
   Darych
 
3 - 19.04.19 - 10:22
regexp)
   Eg0rkas
 
4 - 19.04.19 - 10:41
(0) скопировать код в текстовый документ, пройтись по каждой строке циклом с заменой двух пробелов на один, вставить код обратно, выделить и текст-блок-форматировать (Alt+Shift+F)
может так?
   hhhh
 
5 - 19.04.19 - 10:43
(2) СтрРазделить и СтрСоединить теперь есть. Работает практически мгновенно.
   1Сергей
 
6 - 19.04.19 - 10:44
(5) надо ещё быстрее :)
   Serg_1960
 
7 - 19.04.19 - 10:48
Эээ... "из текста кода убрать" - убрать из текста программно или убрать из текста алгоритма программы? "Ничего не понимаю. Что же это получается?"(цы)
   bolobol
 
8 - 19.04.19 - 10:48
(5) Как она поможет убрать пробелы в: "<таб><таб>МояПеременая = <0160><таб><таб><таб>15;" ?

(1) Это и требуется. Варианты какие есть? - вот вопрос.

(3) Что "регексп"?
   Darych
 
9 - 19.04.19 - 10:50
аа... у чела предпродакшен))))))))
   1Сергей
 
10 - 19.04.19 - 10:50
Обфускацию лепишь чтоле?
   bolobol
 
11 - 19.04.19 - 10:51
(7) "из текста кода" = "из текста, который кодом программы является"
   Garykom
 
12 - 19.04.19 - 10:54
СтрокаБезЛишнихПробелов = СтрЗаменить(СтрокаСЛишнимиПробелами, "  ", " ");
   Garykom
 
13 - 19.04.19 - 10:54
(11) Найти и заменить "<таб><таб>" на "<таб>"
   bolobol
 
14 - 19.04.19 - 10:56
(12) Как это поможет убрать пробелы в: "<таб><таб>МояПеременая = <0160><таб><таб><таб>15;" ?
   bolobol
 
15 - 19.04.19 - 10:58
Расширим задачу расширенным примером:

Требуется убрать пробелы в:

<таб><таб>МояПеременая = <0160><таб><таб><таб>"Текст сообщения !"// Комментарий к этой  строке


чтобы осталось:
МояПеременая="Текст сообщения!"//Комментарий к этой  строке
   1Сергей
 
16 - 19.04.19 - 10:59
(14) Про циклы слышал что-нибудь?
   bolobol
 
17 - 19.04.19 - 10:59
*без двойного пробела в комментарии ещё
   bolobol
 
18 - 19.04.19 - 10:59
(16) По делу, пожалуйста.
   Повелитель
 
19 - 19.04.19 - 11:02
(15)
Функция БыстроУбратьПробелы(Текст) 
ТекстИдеальнй = СтрЗаменить(Текст," ","");
ТекстИдеальнй = СтрЗаменить(ТекстИдеальнй ,Символы.Таб,"");

Возврат ТекстИдеальнй ;
КонецФункции
   ДенисЧ
 
20 - 19.04.19 - 11:03
(19) А НПП кто менять будет?
   hhhh
 
21 - 19.04.19 - 11:03
(8) легко
   Garykom
 
22 - 19.04.19 - 11:03
(15) Если надо сохранить лишние символы внутри "Текст сообщения!" то по простому без написания парсера ЯП никак.
   Повелитель
 
23 - 19.04.19 - 11:03
(19) А вот еще:
ТекстИдеальнй = СтрЗаменить(ТекстИдеальнй ,"Текстсообщения!","Текст сообщения!");
   Повелитель
 
24 - 19.04.19 - 11:05
(20) Уговорил ))
Функция БыстроУбратьПробелы(Текст) 
ТекстИдеальный = СтрЗаменить(Текст," ","");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ,Символы.Таб,"");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ,Символы.НПП,"");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ,"Текстсообщения!","Текст сообщения!");

Возврат ТекстИдеальный;
КонецФункции
   hhhh
 
25 - 19.04.19 - 11:06
(15) мас = СтрРазделить(Текст, Символы.Таб + " " + Символы.НПП + ЕщеКакиеТоСимволыРазделители, Ложь;
     Текст = СтрСоединить(мас);

всё.
   1Сергей
 
26 - 19.04.19 - 11:06
(24) в (0) написано ИЗЛИШНИЕ
   hhhh
 
27 - 19.04.19 - 11:07
(25) + Текст = СтрСоединить(мас, " ");  конечно же
   Garykom
 
28 - 19.04.19 - 11:10
Если код на языке 1С и комментарии нафик не нужны то можно компиляцией и декомпиляцией провернуть.
   Garykom
 
29 - 19.04.19 - 11:12
(28)+ Если очень-очень хочется сохранить комменты, то сначала их куда то сохраняем в привязке к строкам, затем компилируем, декомпилируем, чистим комменты и подставляем куда нуна.
   bolobol
 
30 - 19.04.19 - 11:15
(29) Скорее - свой "компилятор" написать нужно. Пока не понимаю, как программно заставить 1С скомпилированный код из текста выдать.
 
 
   bolobol
 
31 - 19.04.19 - 11:16
(23) Ваш код упадёт на очередном примере.
   bolobol
 
32 - 19.04.19 - 11:17
(27) Таки, получится в итоге:

МояПеременая = "Текст сообщения !"// Комментарий к этой  строке


- все пробелы обратно вернулись.
   Garykom
 
33 - 19.04.19 - 11:18
   Вафель
 
34 - 19.04.19 - 11:19
есть же всякие инструменты, которые AST деревья строят. И граммкатику 1с к ним уже прикручивали
   hhhh
 
35 - 19.04.19 - 11:19
(32) так вам все пробелы надо удалить? тогда
Текст = СтрСоединить(мас);
   Garykom
 
36 - 19.04.19 - 11:20
(33)+https://ru.wikipedia.org/wiki/Расширенная_форма_Бэкуса_%E2%80%94_Наура
https://ru.wikipedia.org/wiki/ANTLR

Но писать синтаксический анализатор на 1С это конечно прикольно.
   bolobol
 
37 - 19.04.19 - 11:21
Проще! Коллеги, проще надо! Это всего лишь "убрать максимум" и "не повредить минимум"

Типа того:
Если СправаБуква и СлеваБуква, а МеждуПробел Тогда
   ЭтоТекст
Иначе 
   НафигПробел
Конец
   bolobol
 
38 - 19.04.19 - 11:22
(35) Кроме пробелов между словами
   Garykom
 
39 - 19.04.19 - 11:22
(37) Ну и у тебя МояПеременная = "Текст <tab><tab>сообщения !" и надо эти табы внутри оставить.

И как?
   Garykom
 
40 - 19.04.19 - 11:23
Пойми не получится "проще", данная задача не имеет простого решения кроме как применения/покупки готового сложного.
   bolobol
 
41 - 19.04.19 - 11:23
Попытки сделать и так и так - неудовлетворительное время работы только уже на уровне массивов. Похоже, что регексп может помочь с производительностью, но что за зверь такой и как его жарить? - не знаю.
   Darych
 
42 - 19.04.19 - 11:24
очень простой зверь - погугли
   bolobol
 
43 - 19.04.19 - 11:24
(39) Таб - тоже пробел, считаем по задаче. Два Таб-а - один излишен.
   Simod
 
44 - 19.04.19 - 11:25
Данные    = "     какие - то     левые    пробелы    ";
Данные    = СокрЛП(Данные);
Пока СтрНайти(Данные, "  ") <> 0 Цикл
    Данные    = СтрЗаменить(Данные, "  ", " ");
КонецЦикла;
   1Сергей
 
45 - 19.04.19 - 11:25
(43) тебе табы вначале надо оставлять или нет? Если это код программы
   Darych
 
46 - 19.04.19 - 11:25
Регулярки.. кажутся сложными вначале, а потом... сам поймешь)
   bolobol
 
47 - 19.04.19 - 11:26
(42) Спасибо! Решение трилинейного квадро-кубического уравнения в первых производных погуглите, да. Часик и проблема искусственного интеллекта решена!
   Darych
 
48 - 19.04.19 - 11:26
(47) вот не понял
   Darych
 
49 - 19.04.19 - 11:27
тебе здесь рег выражения нужно разъяснить?
   bolobol
 
50 - 19.04.19 - 11:28
(48) Просветления Вам!

(49) Да, если в данной задаче это имеет смысл. Чтоб не пушкой по воробьятам.
   bolobol
 
51 - 19.04.19 - 11:29
*примеры, близкие к задаче
*азы для чайников
   sqr4
 
52 - 19.04.19 - 11:29
Есть ощущение что читал подобное обсуждение где то и там был быстрый метод.
   sqr4
 
53 - 19.04.19 - 11:29
   Darych
 
54 - 19.04.19 - 11:29
»
   Darych
 
55 - 19.04.19 - 11:30
сам напросился, суко
   Повелитель
 
56 - 19.04.19 - 11:31
(0)
Была подобная задача у меня, решил ее с помощью регулярных выражений
Книга знаний: Использование регулярных выражений (RegExp) в 1С
   Повелитель
 
57 - 19.04.19 - 11:31
(54) Где так копипастить научился?
   Darych
 
58 - 19.04.19 - 11:33
(57) долго.. в монастыре.. гуру дали скилл .. одним пальцем теперь нажимаю контрол и с
   Повелитель
 
59 - 19.04.19 - 11:35
(56) И еще одну задачу решал, проще вот такую процедуру дописывать, пока идеал не увидишь и все

Функция БыстроУбратьПробелы(Текст) 
ТекстИдеальный = СтрЗаменить(Текст," = ","=");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ,<tab><tab>,"<tab>");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ," !","!");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ," <","<");
ТекстИдеальный = СтрЗаменить(ТекстИдеальный ,"> ",">");

Выполнить(ТекстИзРеквизитаНаФорме);

Возврат ТекстИдеальный;
КонецФункции

5-10 минут тестирования на реальных примерах и у тебя получиться идеальная функция
   K1RSAN
 
60 - 19.04.19 - 11:42
Человек просто не дает полные требования к задаче, а хочет идеального решения.
Хочу программу
какую?
простую
Что должна уметь?
Считать
Что считать?
Примеры
Вот такая пойдет?
А как же "решение трилинейного квадро-кубического уравнения в первых производных"?
Ну вы же сказали простую
ААА вы все дебилы ничего не понимаете

для очень похоже на данную ветку)
   bolobol
 
61 - 19.04.19 - 12:10
(59) 25000 модулей не проверишь глазами.

Так, начало статьи про регексп осилил, судя по ней, мне нужна регулярка, вида:

[а-яА-ЯёЁa-zA-z]\s[а-яА-ЯёЁa-zA-z] - допустимо

^[а-яА-ЯёЁa-zA-z]\s[а-яА-ЯёЁa-zA-z]
^[а-яА-ЯёЁa-zA-z]\s^[а-яА-ЯёЁa-zA-z]
[а-яА-ЯёЁa-zA-z]\s^[а-яА-ЯёЁa-zA-z] - пробел не нужен

Туда ли я лезу? И как заменить отсутствием пробела то что описано в регулярке?
   bolobol
 
62 - 19.04.19 - 12:11
^[а-яА-ЯёЁa-zA-Z]\s*[а-яА-ЯёЁa-zA-Z]
^[а-яА-ЯёЁa-zA-Z]\s*^[а-яА-ЯёЁa-zA-Z]
[а-яА-ЯёЁa-zA-Z]\s*^[а-яА-ЯёЁa-zA-Z] - пробел не нужен
   Darych
 
63 - 19.04.19 - 12:18
в правильном направлении)
   bolobol
 
64 - 19.04.19 - 12:22
\p{L} - любые буквы любого языка, но что такое \р, в данном случае? Ошибка копирования - останки разметки таблицы?

"У программиста была проблема, которую он начал решать регэкспами. Теперь у него две проблемы"...
   Darych
 
65 - 19.04.19 - 12:25
экранированный символ, указывающий на то, что ты написал
   bolobol
 
66 - 19.04.19 - 12:30
стр= "<таб><таб>МояПеременая = <0160><таб><таб><таб>"Текст сообщения !"// Комментарий к этой  строке";

    
    РВ= новый COMОбъект("VBScript.RegExp");
    
    РВ.IgnoreCase = Истина;//Игнорировать регистр

    РВ.Global = Истина;//Поиск всех вхождений шаблона

    
    РВ.Pattern = "(  ^{L}\s+{L}  ) | (  ^{L}\s+^{L}  ) | (  {L}\s+^{L}  )"; 
    
    стр= РВ.Replace(стр, "$1");// как здесь сказать "БЕЗ \s+"?


?
 
 Рекламное место пустует
   Darych
 
67 - 19.04.19 - 12:32
непонял проблемы
   bolobol
 
68 - 19.04.19 - 12:43
Не работает вообще этот паттерн
   bolobol
 
69 - 19.04.19 - 12:46
Ясно, не там ^
   Mr_Rm
 
70 - 19.04.19 - 12:51
(64) \p в регекспах - символ Юникода по категории. \p{L} - Letters, буквы.
Но VBScript.RegExp это не поддерживает.
   bolobol
 
71 - 19.04.19 - 12:54
Осталось непонятным, как заменить по принципу "убрать пробел". Т.к. моё выражение находит места, где данный пробел присутствует, но спереди/сзади цепляет небукву
   bolobol
 
72 - 19.04.19 - 12:59
И в \s нет символа <0160>
   Повелитель
 
73 - 19.04.19 - 13:05
(72)

Попробуй шаблоны тестировать вот тут:
http://www.pcre.ru/eval

Я именно здесь настраивал, а потом в 1с вставлял.
   Повелитель
 
74 - 19.04.19 - 13:12
Вот процедура из рабочего кода, моя:

Процедура ПроставитьАвторамПробелыНажатие(Элемент)
        Попытка
        RegExp = New COMОбъект("VBScript.RegExp");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Б_Авторы.Ссылка,
    |    Б_Авторы.Наименование КАК Наименование
    |ИЗ
    |    Справочник.Б_Авторы КАК Б_Авторы
    |ГДЕ
    |    Б_Авторы.ПометкаУдаления = ЛОЖЬ
    |    И Б_Авторы.Наименование ПОДОБНО ""%.%""
    |
    |УПОРЯДОЧИТЬ ПО
    |    Наименование";
    //Запрос.УстановитьПараметр("",);

    
    РезультатЗапроса = Запрос.Выполнить();
    ТаблицаЗапроса = РезультатЗапроса.Выгрузить();
    
    Для Каждого Состав Из ТаблицаЗапроса Цикл
        ОбработкаПрерыванияПользователя();
        
        Параметры = ПолучитьЗначениеРегулярнымВыражением(СокрЛП(Состав.Наименование),"\.[А-Я]\.",RegExp);
        Если Параметры.ВыполненоУспешно Тогда
            //Если ххСостав.ВыводитьТолькоИмя Тогда

                //мТекстОписания = мТекстОписания + ххСостав.Имя + Символы.ПС;

                //Сообщить(ххСостав.Имя);

                Сообщить(СокрЛП(Состав.Наименование));
                Если Лев(Параметры.Результат,1) = "." Тогда
                    Инициалы = ". " + ДополнительныеПроцедуры.ПравБез(Параметры.Результат,1);
                Иначе
                    Продолжить;
                КонецЕсли; 
                НовоеНаименование = СтрЗаменить(СокрЛП(Состав.Наименование),Параметры.Результат,Инициалы);
                Сообщить(СокрЛП(НовоеНаименование));
                
                
                ТекОбъект = Состав.Ссылка.ПолучитьОбъект();
                ТекОбъект.Наименование = СокрЛП(НовоеНаименование);
                ТекОбъект.Записать();
                
        
            
            
        КонецЕсли;
        
        
    КонецЦикла;

КонецПроцедуры
   Повелитель
 
75 - 19.04.19 - 13:12
Функция ПолучитьЗначениеРегулярнымВыражением(ВходящийТекст,РегВыражение,RegExp=Неопределено) Экспорт
    
    Если RegExp = Неопределено Тогда  
        RegExp = New COMОбъект("VBScript.RegExp"); 
    КонецЕсли; 
    
    //Дополнительно +

    Параметры = Новый Структура;
    Параметры.Вставить("ВыполненоУспешно",Ложь);
    Параметры.Вставить("ВходящийТекст",ВходящийТекст);
    Параметры.Вставить("Результат","");
    //Дополнительно -

    
    //RegExp.IgnoreCase = Ложь; //Игнорировать регистр

    RegExp.Global = Ложь;//Поиск всех вхождений шаблона

    RegExp.MultiLine = Ложь;//Многострочный режим

    
    RegExp.Pattern = РегВыражение;
    Matches=RegExp.Execute(ВходящийТекст);
    ЧислоВхождений=Matches.Count();
    
    Если ЧислоВхождений = 1 Тогда 
        Match = Matches.Item(0);
        Параметры.Результат = СокрЛП(Match.Value);
        Параметры.ВыполненоУспешно = Истина;
    КонецЕсли;
    
    
    
    Возврат Параметры;
КонецФункции
   Повелитель
 
76 - 19.04.19 - 13:14
(74) Наименования такие отрабатывала например:

1. (АСТ) Гордеева Е.А., Парнякова М.В., <не указано> Мой секретный дневничок на каждый день `16 7-инт
2. EverAfterHigh(Эксмо) Школа "Долго и счастливо". Дневник моих секретов `16, 7Бц
3. Winx (АСТ) Булеков С. Н. Дневник волшебного питомца. Клуб Winx `12 7БЦ
   Повелитель
 
77 - 19.04.19 - 13:17
(76) Получал на выходе:

1. (АСТ) Гордеева Е. А., Парнякова М. В., <не указано> Мой секретный дневничок на каждый день `16 7-инт
2. EverAfterHigh(Эксмо) Школа "Долго и счастливо". Дневник моих секретов `16, 7Бц
3. Winx (АСТ) Булеков С. Н. Дневник волшебного питомца. Клуб Winx `12 7БЦ
   Timon1405
 
78 - 19.04.19 - 13:18
(72)
 стр= "        МояПеременая =              ""Текст сообщения !""// Комментарий к этой   строке";

 РВ= новый COMОбъект("VBScript.RegExp");
 РВ.IgnoreCase = Истина//Игнорировать регистр

 РВ.Global = Истина//Поиск всех вхождений шаблона

 РВ.Pattern = "[\s+\xA0]{2,}"; 
 стр= РВ.Replace(стр, "");
   bolobol
 
79 - 19.04.19 - 13:23
(78) Работает неполноценно. Не все излишние пробелы находит.
   bolobol
 
80 - 19.04.19 - 13:23
Что такое \хА0 ?
   bolobol
 
81 - 19.04.19 - 13:27
символ 160, похоже.
   Timon1405
 
82 - 19.04.19 - 13:27
(79)(80) "\x" + ваше 0160 в 16ной системе. аналогично можно перечислить другие спецсимволы
опишите четкий критерий какие пробелы считаются излишними
   bolobol
 
83 - 19.04.19 - 13:36
(82) Неразрывный пробел - вполне чётко под критерий "пробельные символы" попадает, но его в \s нет, что странно
   bolobol
 
84 - 19.04.19 - 13:39
Получилось следующее:

(([^а-яА-ЯёЁa-zA-Z\s\xA0])([\s\xA0]+)([а-яА-ЯёЁa-zA-Z]))|(([^а-яА-ЯёЁa-zA-Z\s\xA0])([\s\xA0]+)([^а-яА-ЯёЁa-zA-Z\s\xA0]))|(([а-яА-ЯёЁa-zA-Z])([\s\xA0]+)([^а-яА-ЯёЁa-zA-Z\s\xA0]))|(([\s\xA0])([\s\xA0]+))

- находит (Буква Небуква) (Небуква Буква) (Небуква Небуква), но не находит (Буква Небуква Буква), т.к. мне нужно, чтобы находил только пробельные части, чтобы их заменить на ничто, а в результат включаются и соседние символы.

Не разобрался, как исключать из результатов части вокруг пробельных символов
   bolobol
 
85 - 19.04.19 - 13:43
Также - находит 2-ой и последующие пробельные символы, но в начале и конце строки останутся по первому пробельному символу
   bolobol
 
86 - 19.04.19 - 13:51
Есть же схема описания поиска "найти пробел, ранее которого..., и после которого..." - но не осилил с пониманием закорючк
   bolobol
 
87 - 19.04.19 - 13:51
ов
   bolobol
 
88 - 19.04.19 - 13:52
В итоге поиска - только искомые пробелы. И в схеме (Буква Небуква Буква) - будут две замены на (БукваНебукваБуква), а не как в моём регекспе (БукваНебуква Буква), и требует второй проход.
   dka80
 
89 - 19.04.19 - 14:06
Ctrl+A, Shift+TAB, Shift+TAB, Shift+TAB, Shift+TAB
Ctrl+H, найти " ", заменить на ""
   Mr_Rm
 
90 - 19.04.19 - 14:38
Если нужно сохранять пробелы в строках, сокращать до одного в комментариях и удалять все остальные, то одним VBScript.RegExp вряд ли можно обойтись. А ещё надо учесть многострочные строки.
   bolobol
 
91 - 19.04.19 - 14:49
(90) Многострочных строк не надо учитывать. Осталось, как и в начале - разобраться, чем РегЕксп тут может помочь. Находит - да, а вот замену как сделать?
   Сияющий в темноте
 
92 - 19.04.19 - 14:52
Проще парсер написать,который будет разбирать переменные и выражения.
   bolobol
 
93 - 19.04.19 - 14:57
(92) Проще - воспользоваться результатами РегЕхп и 1С-кодом его обработать. Но хочется скорости, чтобы результат уже был обработан. Задача вот - правильный РегЕхп написать, что я пока не осилил. В мануалах написано, что возможно, но примеры не работают, а в мануалах - не поясняется.
   Сияющий в темноте
 
94 - 19.04.19 - 15:00
парсер может оказаться быстрен регекспа,еслм его правильно писать.
опять же,в парсере можно и заодно локальные переменные с однобуквить.
   bolobol
 
95 - 19.04.19 - 15:01
Не, ну задачу-то не надо усложнять! Только излишние пробелы требуется удалить.
   Mr_Rm
 
96 - 19.04.19 - 15:09
Вот пример (все пробелы двойные):
  МояПеременая  =  "Текст  сообщения  ""c  кавычками  внутри""  //  не  комментарий  //  """  //  Комментарий  к  этой  строке  "со  строкой  //  и  "не  комментарием"  !
Что должно получиться?
   quest
 
97 - 19.04.19 - 15:23
Генератор лексических анализаторов в помощь. lex/flex/JFLEX - там все просто
   bolobol
 
98 - 19.04.19 - 15:46
Всё оказалось проще простого:

((?<=[^а-яА-ЯёЁa-zA-Z\s\xA0])[\s\xA0]+)|([\s\xA0]+(?=[^а-яА-ЯёЁa-zA-Z\s\xA0]))|((?<=[\s\xA0])[\s\xA0]+)

Первый и последний пробелы остаются лишь
   bolobol
 
99 - 19.04.19 - 16:07
И с конечными и начальными пробелами:
((?<=[^а-яА-ЯёЁa-zA-Z\s\xA0])[\s\xA0]+)|([\s\xA0]+(?=[^а-яА-ЯёЁa-zA-Z\s\xA0]))|((?<=^|[\s\xA0])[\s\xA0]+)|([\s\xA0]+$)
   bolobol
 
100 - 19.04.19 - 16:09
(96)

МояПеременая="Текст сообщения""c кавычками внутри""//не комментарий//"""//Комментарий к этой строке"со строкой//и"не комментарием"!
  1  2   

Список тем форума
Рекламное место пустует  Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.