Меню Рубрики

Windows символ переноса строки

Есть ли специальный символ для перехода на новую строку?

Как сделать запись в файл без перехода на новую строку?
Имеется код: set /P asd= i.dat Ну по коду ясно что он открывает файл и в.

Не считывается символ перехода на новую строку
Здравствуйте, такой вопрос. Я создал форму. Ввожу в нее текст, отправляю запрос, все работает.

Символ перехода на новую строку в калькуляторе Страуструпа
Выполняю задание в книге «Программирование Принципы и практика с использованием с++» В главе 7.

Сочетания клавиш для перехода на новую строку
Извиняюсь сразу за тему , перенесите пожалуйста куда надо. Суть такая, много на видео видел по.

Добавлено через 3 минуты
К примеру есть специальные знаки @#$%^&* у каждого свои предназначение
а есть ли знак который делает перенос строки на следующую стоку
пример
echo Копарация Microsoft [Знак переноса] 1991-2010
итог

Копарация Microsoft
1991-2010

вопрос есть ли такой спец знак ?

Esc + 13 или 14 ?
чтото я не понял
ALT + 13 =♪
ALT + 14 =♫

Часть сообщений перенёс в новый тред «Сымитировать нажатие клавиши ENTER».

Такого специального символа в синтаксисе языка командной строки и пакетных файлов нет.

Но есть команда, которая осуществляет переход на новую строку.

Эта команда — команда ECHO. (в классическом варианте в конце именно точка, но можно использовать и некоторые другие символы):

Для записи в коде выводимого текста в одну строку можно создать и своё сочетание символов для перехода на новую строку в виде расширения какой-нибудь переменной, например %n% , предварительно задав эту переменную:

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выделить в отдельную строку все слова, где встречается хотя бы один специальный символ из заданного перечня
Люди Хелп. оч срочно надо написать программу. А как я не могу понять вообще как это реализовать.

Игнорирование перехода на новую строку
Добрый день! Использую VS’2013. Консольное приложение Win32. Возникла необходимость в консоли.

cin без перехода на новую строку
Как сделать, чтобы после считывания cin курсор не переводился на новую строку, а оставался на.

Размер символа перехода на новую строку
Программа записывает в файл, а потом читает структуру такого типа: // размеры в файле.

Источник

Windows символ переноса строки

Название закрепилось из-за того, что следующий символ после разделителя печатается уже на новой строке, то есть на следующей строке, расположенной ниже текущего текста, сразу следующей за разделителем. В виде символов представляют «новую строку» по-разному, в зависимости от аппаратной платформы и операционной системы, что может стать потенциально проблемой при обмене данными между системами с различными представлениями форматирования текста.

Следует различать ситуации, когда «новая строка» завершает строки, а когда — разделяет их. Если «новая строка» подразумевает отделение строк, то знак «новой строки» не ставится после последней строки файла. По общему соглашению, в большинстве систем «новая строка» добавляется даже после последней строки, т.е. трактуют «новую строку» как окончание строки. Некоторые программы имеют трудности с обработкой последней строки файла, если он не заканчивается символом новой строки. И наоборот, программы, ожидающие «новую строку» чтобы использовать ее как разделитель, интерпретируют последнюю «новую строку» как начало новой (пустой) строки. Это может привести к различиям в подсчете строк в файле, но во всем остальном это, в общем-то, безвредно.

В текстах, предназначенных для чтения людьми при помощи программ, использующих переносы слов, символ «новой строки» обычно необходим, только если перенос строки должен быть независим от положения следующего слова на этой же строке, как, например, между параграфами и вертикальными списками (см. жёсткий возврат и мягкий возврат)

Терминология

Но́вая строка́ (калька с англ. new line зд. «с новой строки») — понятие логического форматирования текста в текстовом процессоре, браузере и т.д. Как правило (хотя и не обязательно), новая строка начинает запись текста с нового абзаца (англ. hard return ). Новая строка подразумевает обязательный перевод строки в соответственном месте текста, хотя «переводы строки» вообще имеются и внутри абзаца.

Возвра́т каре́тки (англ. Carriage Return, CR ) — управляющий символ 0x0D, при выводе которого курсор перемещается к левому краю поля, не меняя высоту. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh.

Пода́ча строки́ (от англ. Line Feed, LF «подача [бумаги] на строку») — управляющий символ ASCII 0x0A, при выводе которого «курсор» перемещается на следующую строку.

В случае принтера это означает сдвиг бумаги вверх, в случае дисплея — сдвиг курсора вниз если ещё осталось место, и прокрутку текста вверх если курсор находится на нижней строке.

Возвращается ли при этом курсор к левому краю или нет, зависит от реализации.

Таким образом, вывод последовательности CR LF в семантике терминала гарантирует действие «создание новой строки».

Терминалы (и их эмуляторы) могут также проводить различные преобразования символов (например, «LF» → «CR LF», «CR» → «CR LF») при вводе и выводе текста.

Представления и реализации

Программные приложения и операционые системы обычно представляют «новую строку» в виде одного или двух управляющих символов.

Краткие сведения

Системы, основанные на LF (от англ. Line feed (перевод строки), 0x0A) или CR (от англ. Carriage Return, 0x0D) по отдельности, или CR следует за LF (CR+LF, 0x0D 0x0A); см. ниже историческую причину для соглашения CR+LF. Эти символы основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.

Основные цифровые реализации

  • LF (ASCII 0x0A) — используется в Unix и Unix-подобных операционнах системах (Linux, Xenix, Mac OS X, BeOS,
    • CR (ASCII 0x0D) — используется в машинах Commodore, Apple II, Mac OS до версии 9 и — используется в DEC CP/M, MP/M, OS/2, Microsoft Windows, Symbian OS, протоколах internet.

    Перевод строки в Unicode

    По стандарту, любое совместимое с Уникодом приложение должно воспринимать как перевод строки каждый из нижеследующих символов:

    • LF: подача строки, U+000A
    • CR: возврат каретки, U+000D
    • NEL: новая строка, U+0085
    • FF: новая страница, U+000C
    • LS: разделитель строк, U+2028
    • PS: разделитель абзацев, U+2029

    Последовательность CR LF (U+000D U+000A) надлежит воспринимать как один перевод строки (а не два) [1] .

    Трудности

    • Юникод старается примирить разницу представлений перевода строки, уравнивая CR, LF и CR LF, однако вступает в противоречие с наследуемым ASCII при трактовке LF CR, не предварённых CR: согласно ASCII это один перевод строки, а согласно Юникоду — два. Вероятно, Юникод сделал ставку на не существовавшие в ASCII разделители строк и абзацев, но они не прижились.
    • В зависимости от того, считать ли перевод строки её частью (завершителем) или не считать (считая их разделителем), после последней строки его ставят или нет. При пренебрежении одной из этих возможностей во время декодирования конец текста может стать неожиданным или появится лишняя пустая строка. Для сравнения, точка с запятой в Си команды завершает, а в Паскале разделяет.

    История

    На механических пишущих машинках имелся рычаг для возврата каретки к левому краю текста. При его использовании специальный механизм прокручивал вал, подвигая бумагу вверх для освобождения места для новой строки.

    На АЦПУ функции возврата каретки (головки) и подачи новой строки были разделены, откуда традиция представления перевода строки как CR LF перешла и к текстовым файлам.

    Некоторые исторические цифровые системы записи текста (например, при помощи перфокарт) вообще не использовали символ перевода строки.

    Примечания

    Дополнительные источники

    • The Unicode reference, see paragraph 5.8 in Chapter 5 of the Unicode 4.0 standard (PDF)
    • «The End-of-Line Story»
    • The [NEL] Newline Character
    • The End of Line Puzzle
    • Tofrodos — software for Unix that converts to and from DOS newlines
    • ToFroWin: a Windows shell extension that is able to convert multiple files from DOS to UN*X (and vice-versa) line endings right from the context menu.

    Wikimedia Foundation . 2010 .

    Смотреть что такое «Перенос строки» в других словарях:

    перенос строки — Перенос части длинной строки текста на следующую строку. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN line folding … Справочник технического переводчика

    ПЕРЕНОС СЛОВА — (wordwrap) Способность большинства текстовых редакторов (wordprocessors) автоматически переносить слово из конца строки на следующую строку, если это слово уже выходит за границу предельной длины строки. Бизнес. Толковый словарь. М.: ИНФРА М ,… … Словарь бизнес-терминов

    Перенос в математических формулах — разбивка не умещающейся в строку мат. формулы на части по строкам. Разделять формулы на части по строкам надо в первую очередь на знаках отношения между левой и правой частями формул (=, ≈, , ≤, ≥): во вторую на отточии, знаках сложения … Издательский словарь-справочник

    Перенос в химических формулах — разбивка не умещающейся в строку хим. формулы на части по строкам. Допускается только в случае крайней необходимости. Разбивку рекомендуется делать на знаках направления реакции (стрелках), знаках равенства, равновесия , взаимодействия (+ или –) … Издательский словарь-справочник

    ПЕРЕНОС — (анжанбеман) (французское enjambement, буквально перешагивание), крайний случай несовпадения членения на стихи (т.е. стихотворные строки) с естественным синтаксическим членением речи, когда синтаксическая пауза внутри стиха (или полустишия)… … Современная энциклопедия

    Перенос — (анжанбеман) (французское enjambement, буквально перешагивание), крайний случай несовпадения членения на стихи (т.е. стихотворные строки) с естественным синтаксическим членением речи, когда синтаксическая пауза внутри стиха (или полустишия)… … Иллюстрированный энциклопедический словарь

    Перенос (типографика) — У этого термина существуют и другие значения, см. перенос. Перенос в типографике разрыв части текста (слова, формулы и т. п.), при котором её начало оказывается на одной строке, а конец на другой. Содержание 1 Перенос слов 1 … Википедия

    перенос — ПЕРЕНО´С (франц. enjambement, от enjamber перешагнуть, перескочить) несовпадение интонационно фразового членения в стихе с метрическим членением, причем фраза (или часть ее, составляющая цельное синтаксическое сочетание), начатая в одном стихе,… … Поэтический словарь

    Перенос слова — Перенос в типографике разрыв части текста (слова, формулы и т. п.), при котором её начало оказывается на одной строке, а конец на другой. Содержание 1 Перенос слов 1.1 Знаки переноса 1.2 Осложненный перенос … Википедия

    перенос — (<<>>фр. enjambement перенос) перенос части фразы из предшествующей стихотворной строки в последующую, вызванный несовпадением традиционно заканчивающей строку конечной стиховой паузы с паузой смысловой. На фоне ритмически правильных стихов П.… … Словарь литературоведческих терминов

    Источник

    Строки в C# и .NET


    От переводчика: Джон Скит написал несколько статей о строках, и данная статья является первой, которую я решил перевести. Дальше планирую перевести статью о конкатенации строк, а потом — о Юникоде в .NET.

    Тип System.String (в C# имеющий алиас string) является одним из наиболее часто используемых и важных типов в .NET, и вместе с тем одним из самых недопонимаемых. Эта статья описывает основы данного типа и развенчивает сложившиеся вокруг него мифы и непонимания.

    Так что же такое string

    Строка в .NET (далее — string, я не буду использовать полное имя System.String каждый раз) является последовательностью символов. Каждый символ является символом Юникода в диапазоне от U+0000 до U+FFFF (будет рассмотрено далее). Строковый тип имеет следующие характеристики:

    Строка является ссылочным типом

    Существует распространённое заблуждение о том, что строка является значимым типом. Это заблуждение истекает из свойства неизменяемости строки (см. следующий пункт), так как для неискушенного программиста неизменяемость часто по поведению кажется схожей со значимыми типами. Тем не менее, string — ссылочный тип, со всеми присущими ссылочным типам характеристиками. Я более детально расписал о различиях между ссылочными и значимыми типами в своих статьях «Parameter passing in C#» и «Memory in .NET — what goes where».

    Строка является неизменяемой

    Никак невозможно изменить содержимое созданной строки, по крайней мере в безопасном (safe) коде и без рефлексии. Поэтому вы при изменении строк изменяете не сами строки, а значения переменных, указывающих на строки. Например, код s = s.Replace («foo», «bar»); не изменяет содержимое строки s, которое было до вызова метода Replace — он просто переназначает переменную s на новообразованную строку, которая является копией старой за исключением всех подстрок «foo», заменённых на «bar».

    Строка может содержать значение null

    В языке C строки являются последовательностями символов, оканчивающимися символом ‘\0‘, также называемым «nul» или «null». Я называю его «null», так как именно такое название имеет символ ‘\0’ в таблице символов Юникода. Не путайте символ «null» с ключевым словом null в C# — тип System.Char является значимым, а потому не может принимать значение null . В .NET строки могут содержать символ «null» в любом месте и работать с ним без каких-либо проблем. Тем не менее, некоторые классы (к примеру, в Windows Forms) могут расценивать «null»-символ в строке как признак конца строки и не учитывать всё содержимое строки после этого символа, поэтому использование «null»-символов таки может стать проблемой.

    Строка переопределяет оператор равенства ==

    При вызове оператора == для определения равенства двух строк происходит вызов метода Equals , который сравнивает именно содержимое строк, а не равенство ссылок. К примеру, выражение «hello».Substring(0, 4)==»hell» возвратит true , хотя ссылки на строки по обеих сторонах оператора равенства разные (две ссылки ссылаются на два разных строковых экземпляра, которые, при этом, содержат одинаковые значения). Вместе с тем необходимо помнить, что равенство значений, а не ссылок происходит только тогда, когда оба операнда на момент компиляции являются строго строковым типом — оператор равенства не поддерживает полиморфизм. Поэтому если хотя бы один из сравниваемых операндов будет иметь тип object , к примеру (хотя внутренне и будет оставаться строкой), то будет выполнено сравнение ссылок, а не содержимого строк.

    Интернирование

    В .NET существует понятие «пула интернирования» (intern pool). По своей сути это всего лишь набор строк, но он обеспечивает то, что когда вы в разных местах программы используете разные строки с одним и тем же содержимым, то это содержимое будет храниться лишь один раз, а не создаваться каждый раз по-новому. Вероятно, пул интернирования зависит от конкретного языка, однако он определённо существует в C# и VB.NET, и я бы был очень удивлён, увидев язык на платформе .NET, не использующий пул интернирования; в MSIL пул интернирования очень просто использовать, гораздо проще, нежели не использовать. Наряду с автоматическим интернированием строковых литералов, строки можно интернировать вручную при помощи метода Intern , а также проверять, является ли та или иная строка уже интернированной при помощи метода IsInterned . Метод IsInterned не интуитивен, так как вы ожидаете, что он возвратит Boolean , а вот и нет — если текущая строка уже существует в пуле интернирования, то метод возвратит ссылку на неё, а если не существует, то null . Подобно ему, метод Intern возвращает ссылку на интернированную строку, причём вне зависимости от того, была ли текущая строка в пуле интернирования до вызова метода, или же она была туда занесена вместе с вызовом метода, или же пул интернирования содержит копию текущей строки.

    Литералы

    Литерал — это, грубо говоря, «захардкодженное» в коде значение строки. Есть два типа строковых литералов в C# — стандартные (regular) и дословные (verbatim). Стандартные литералы в C# схожи с таковыми в большинстве языков программирования — они обрамляются в двойные кавычки («), а также могут содержать специальные символы (собственно двойные кавычки («), обратный слеш (\), перенос строки (carriage return — CR), подача строки (line feed — LF) и некоторые другие), требующие экранирования. Дословные литералы позволяют почти то же самое, что и стандартные, однако дословный литерал оканчивается на первых не продублированных двойных кавычках. Чтобы собственно вставить в дословный литерал двойные кавычки, вам нужно их продублировать («»). Также, в отличие от стандартного литерала, в дословном могут присутствовать символы возврата каретки и переноса строки без экранирования. Для использования дословного литерала необходимо указать @ перед открывающей кавычкой. Ниже в таблице собраны примеры, демонстрирующие различия между описанными типами литералов.

    Стандартный литерал Дословный литерал Результирующая строка
    «Hello» @»Hello» Hello
    «Обратный слеш: \\» @»Обратный слеш: \» Обратный слеш: \
    «Двойная кавычка: \»» @»Двойная кавычка: «»» Двойная кавычка: «
    «CRLF:\r\nПосле CRLF» @»CRLF:
    После CRLF»
    CRLF:
    После CRLF

    Имейте ввиду, что стандартный и дословный литералы существуют только для вас и компилятора C#. Как только код скомпилирован, все литералы приводятся к единообразию.
    Вот полный список специальных символов, требующих экранирования:

    • \’ — одинарная кавычка, используется для объявления литералов типа System.Char
    • \» — двойная кавычка, используется для объявления строковых литералов
    • \\ — обратный слеш
    • \0 — null-символ в Юникоде
    • \a — символ Alert (№7)
    • \b — символ Backspace (№8)
    • \f —смена страницы FORM FEED (№12)
    • \n — перевод строки (№10)
    • \r — возврат каретки (№13)
    • \t — горизонтальная табуляция (№9)
    • \v — вертикальная табуляция (№11)
    • Uxxxx — символ Юникода с шестнадцатеричным кодом xxxx
    • \xn[n][n][n] — символ Юникода с шестнадцатеричным кодом nnnn, версия предыдущего пункта с переменной длиной цифр кода
    • \Uxxxxxxxx — символ Юникода с шестнадцатеричным кодом xxxxxxxx, используется для вызова суррогатных пар.

    В своей практике я редко использую символы \a, \f, \v, \x и \U.

    Строки и отладчик

    Довольно часто при просмотре строк в отладчике (используя VS.NET 2002 и VS.NET 2003) люди сталкиваются с проблемами. Ирония в том, что эти проблемы чаще всего создаёт отладчик, пытаясь быть полезным. Иногда он отображает строку в виде стандартного литерала, экранируя обратными слешами все спецсимволы, а иногда он отображает строку в виде дословного литерала, оглавляя её @. Поэтому многие спрашивают, как удалить из строки @, хотя его там фактически нет. Кроме этого, отладчики в некоторых версиях VS.NET не отображают строки с момента первого вхождения null-символа \0, и что ещё хуже, неправильно вычисляют их длины, так как подсчитывают их самостоятельно вместо запроса к управляемому коду. Естественно, всё это из-за того, что отладчики рассматривают \0 как признак окончания строки.

    Учитывая такую путаницу, я пришел к выводу, что при отладке подозрительных строк их следует рассматривать множеством способов, дабы исключить все недоразумения. Я предлагаю использовать приведённый ниже метод, который будет печатать содержимое строки в консоль «правильным» способом. В зависимости от того, какое приложение вы разрабатываете, вы можете вместо вывода в консоль записывать строки в лог-файл, отправлять в трассировщики, выводит в модальном Windows-окне и т.д.

    Использование памяти и внутренняя структура

    В текущей реализации .NET Framework каждая строка занимает 20+(n/2)×4 байт, где n — количество символов в строке или, что одно и то же, её длина. Строковый тип необычен тем, что его фактический размер в байтах изменяется им самим. Насколько я знаю, так могут делать только массивы. По факту, строка — это и есть массив символов, расположенный в памяти, а также число, обозначающее фактический размер массива в памяти, а также число, обозначающее фактическое количество символов в массиве. Как вы уже поняли, длина массива не обязательно равна длине строки, так как строки могут перераспределяться со стороны mscorlib.dll для облегчения их обработки. Так само делает, к примеру, StringBuilder . И хотя для внешнего мира строки неизменяемые, внутри mscorlib они ещё как изменяемые. Таким образом, StringBuilder при создании строки выделяет несколько больший символьный массив, нежели того требует текущий литерал, а потом прибавляет новые символы в созданный массив до тех пор, пока они «влезают». Как только массив заполняется, создаётся новый, ещё больший массив, и в него копируется содержимое из старого. Кроме этого, в числе, обозначающем длину строки, первый бит отведён под специальный флаг, определяющий, содержит ли строка не-ASCII символы или нет. Благодаря этому флагу исполняющая среда в некоторых случаях может проводить дополнительные оптимизации.

    Хотя со стороны API строки не являются null-терминированными, внутренне символьные массивы, представляющие строки, являются. А это значит, что строки из .NET могут напрямую передаваться в неуправляемый код безо всякого копирования, предполагая, что при таком взаимодействии строки будут маршаллированы как Юникод.

    Кодировки строк

    Если вы не знакомы с кодировками символов и Юникодом, пожалуйста, прочтите сначала мою статью о Юникоде (или её перевод на Хабре).

    Как я уже сказал вначале статьи, строки всегда хранятся в Юникод-кодировке. Всякие домыслы о Big-5-кодировках или UTF-8-кодировках являются ошибкой (по крайней мере, по отношению к .NET) и являются следствием незнания самих кодировок или того, как .NET обрабатывает строки. Очень важно понять этот момент — рассматривание строки как такой, которая содержит некий валидный текст в кодировке, отличной от Юникода, почти всегда является ошибкой.

    Далее, набор символов, поддерживаемых Юникодом (одним из недостатков Юникода является то, что один термин используется для разных вещей, включая кодировки и схемы кодировок символов), превышает 65536 символов. А это значит, что один char (System.Char) не может содержать любой символ Юникода. А это приводит к понятию суррогатных пар, где символы с кодом выше U+FFFF представляются в виде двух символов. По сути, строки в .NET используют кодировку UTF-16. Возможно, большинству разработчиков и не нужно углубляться касательно этого в детали, но по крайней мере это стоит знать.

    Региональные и интернациональные странности

    Некоторые странности в Юникоде ведут к странностям при работе со строками и символами. Большинство строковых методов зависимы от региональных настроек (являются culture-sensitive — регионально-чувствительными), — другими словами, работа методов зависит от региональных настроек потока, в котором эти методы выполняются. Например, как вы думаете, что возвратит этот метод «i».toUpper() ? Большинство скажут: «I», а вот и нет! Для турецких региональных настроек метод вернёт «İ» (код U+0130, описание символа: «Latin capital I with dot above»). Для выполнения регионально-независимой смены регистра вы можете использовать свойство CultureInfo.InvariantCulture и передать его как параметр в перегруженную версию метода String.ToUpper , которая принимает CultureInfo .

    Есть и другие странности, связанные со сравнением и сортировкой строк, а также с нахождением индекса подстроки в строке. Некоторые из этих операций регионально-зависимы, а некоторые — нет. Например, для всех регионов (насколько я могу видеть) литералы «lassen» и «la\u00dfen» (во втором литерале шестнадцатеричным кодом указан символ «S острое» или «эсце́т») определяются как равные при передачи их в методы CompareTo или Compare , но вот если передать их в Equals , то будет определено неравенство. Метод IndexOf будет учитывать эсцет как «ss» (двойное «s»), но вот если вы используете одну из перегрузок CompareInfo.IndexOf , где укажете CompareOptions.Ordinal , то эсцет будет обработан правильно.

    Некоторые символы Юникода вообще абсолютно невидимы для стандартного метода IndexOf . Однажды кто-то спросил в группе новостей C#, почему метод поиска и замены уходит в бесконечный цикл. Этот человек использовал метод Replace для замены всех сдвоенных пробелов одним, а потом проверял, окончилась ли замена и нет ли больше сдвоенных пробелов в строке, используя IndexOf . Если IndexOf показывал, что сдвоенные пробелы есть, строка снова отправлялась на обработку к Replace . К сожалению, всё это «ломалось», так как в строке присутствовал некий «неправильный» символ, расположенный точно между двумя пробелами. IndexOf сообщал о присутствии сдвоенного пробела, игнорируя этот символ, а Replace не выполнял замену, так как «видел» символ. Я так и не узнал, что это был за символ, но подобная ситуация легко воспроизводится при помощи символа U+200C, который является «не-связующим символом нулевой ширины» (англ. zero-width non-joiner character), что бы это не значило, чёрт возьми! Поместите такой или ему подобный в вашу строку, и IndexOf будет его игнорировать, а Replace — нет. Снова-таки, чтобы заставить оба метода работать одинаково, вы можете использовать CompareInfo.IndexOf и указать ему CompareOptions.Ordinal . Мне кажется, что уже написано достаточно много кода, который будет «валиться» на таких «неудобных» данных. И я даже не намекаю, что мой собственный код застрахован от подобного.

    Microsoft опубликовала некоторые рекомендации касательно обработки строк, и хотя они датируются 2005-м годом, их всё ещё сто́ит прочесть.

    Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Windows символ конца строки
  • Windows сервер для дома
  • Windows сбросить таблицу маршрутизации
  • Windows сброс таблицы маршрутизации
  • Windows сборка xp game edition