Pas-pg.dos/Tpw14 icon

Pas-pg.dos/Tpw14



НазваниеPas-pg.dos/Tpw14
Дата конвертации28.08.2012
Размер23 Kb.
ТипДокументы
1. /Pas-pg.dos/Cont.txt
2. /Pas-pg.dos/Tpw1.txt
3. /Pas-pg.dos/Tpw10.txt
4. /Pas-pg.dos/Tpw11.txt
5. /Pas-pg.dos/Tpw12.txt
6. /Pas-pg.dos/Tpw13.txt
7. /Pas-pg.dos/Tpw14.txt
8. /Pas-pg.dos/Tpw15.txt
9. /Pas-pg.dos/Tpw16.txt
10. /Pas-pg.dos/Tpw17.txt
11. /Pas-pg.dos/Tpw18.txt
12. /Pas-pg.dos/Tpw19.txt
13. /Pas-pg.dos/Tpw2.txt
14. /Pas-pg.dos/Tpw20.txt
15. /Pas-pg.dos/Tpw21.txt
16. /Pas-pg.dos/Tpw22.txt
17. /Pas-pg.dos/Tpw23.txt
18. /Pas-pg.dos/Tpw24_1.txt
19. /Pas-pg.dos/Tpw24_2.txt
20. /Pas-pg.dos/Tpw3.txt
21. /Pas-pg.dos/Tpw4.txt
22. /Pas-pg.dos/Tpw5.txt
23. /Pas-pg.dos/Tpw6.txt
24. /Pas-pg.dos/Tpw7.txt
25. /Pas-pg.dos/Tpw8.txt
26. /Pas-pg.dos/Tpw9.txt
27. /Pas-pg.dos/Tpwa.txt
28. /Pas-pg.dos/Tpwb.txt
29. /Pas-pg.dos/Tpwin.txt
1╛лaJЦ╡╡╡╡╡C:\WORD55\NORMAL.STYSITIZEN╢╡╡╡^Глава 14. Модуль WinCrt
Модуль WinCrt реализует аналогичный терминалу текстовый экран в окне. С помощью модуля WinCrt вы можете легко создавать программы, использующие стандартные процедуры Read. ReadLn, Write и WriteLn для выполнения операций ввода и вывода (так же, как в обычной прикладной программе, работающей в текстовом режиме). Модуль WinCrt содержит все алгоритмы, управляющие эмуляцией текстового экрана в программной среде Windows. Если ваша программа использует модуль WinCrt, вам не потребуется писать "специфический для Windows" исходный код.
Использование модуля WinCrt Чтобы использовать модуль WinCrt, нужно просто указать в вашей программе оператор uses, как и при использовании любого другого модуля. uses WinCrt; По умолчанию стандартные текстовые файлы Input и Output, определенные в модуле System, не присваиваются, и все обращения к процедурам Read, Readln, Write или Writeln без указания файловой переменной приводят к ошибке ввода-вывода. Однако, когда прогр амма использует модуль WinCrt, код инициализации данного модуля присваивает Input и Output стандартные текстовые файлы, чтобы ссылаться на окно, эмулирующее текстовый экран. Это соответствует выполнению в начале программы следующих операторов: AssignWinCrt(Input); Reset(Input); AssignWinCrt(Output); Rewrite(Output); Когда в программе выполняются процедуры Readln, Read, Write или Writeln, в оперативной области Windows открывается окно CRT. По умолчанию заголовком окна CRT будет полное имя маршрута файла .EXE программы. Когда программа завершает работу (управление достигает конечного зарезервированного слова end), заголовок окна CRT изменяется на "(Inactive nnnnn)", где nnnnn - заголовок окна в его активном состоянии. Заметим, что хотя программа и завершила работу, окно остается на экране, благодаря чему пользователь может проверить вывод программы. Аналогично другим прикладным программам Windows, программа не завершается полностью, пока пользователь не закроет ок но. Более полно управлять жизненным циклом окна CRT вам позволяют подпрограммы InitWinCrt и DoneWinCrt. При обращении к первой из них без ожидания первого вызова процедур Readln, Read, Write или Writeln немедленно создается окно CRT. Аналогично, обращени е к DoneWinCrt немедленно уничтожает окно CRT, не ожидая, пока его закроет пользователь. Окно CRT представляет собой прокручиваемое "панорамное" окно на виртуальном текстовом экране. По умолчанию виртуальный экран имеет размеры 80 столбцов на 25 строк, но реальный размер окна CRT может быть меньше. Если этот размер меньне, пользователь д ля перемещения области окна по текстовому экрану большего размера может использовать полосы прокрутки окна или клавиши управления курсором. Это особенно полезно для "обратной прокрутки" и проверки ранее написанного текста. По умолчанию панорамное окно отс леживает курсор текстового экрана. Другими словами, панорамное окно автоматически прокручивается, чтобы обеспечить постоянную видимость курсора. Установив переменную AutoTracking в значение False, вы можете запретить средство автоматической прокрутки. Размеры виртуального экрана определяются переменной ScreenSize. Присвоив этой переменной новые размерности перед тем, как ваша программа создает окно CRT, вы можете изменить размеры виртуального экрана. Когда окно создается, в динамически распределяе мой памяти выделяется буфер экрана. Размер этого буфера равен произведению ScreenSize.Y на ScreenSize.Y и не может превышать 65520 байт. Ответственность за присваивания значений этип переменным возлагается на вас (они не должны превышать указанную границу ). Если, например, вы присвоите ScreenSize.X значение 64, то наибольшим допустимым значением для ScreenSize.Y будет 1023. В любой момент в процессе выполнения программы, использующей модуль WinCrt, пользователь может прервать выполнение, выбрав в меню Control (Управление) окна CRT команду Close (Закрытие), дважды щелкнув кнопкой "мыши" в рамке меню Control или нажав кла виши Alt+F4. Аналогично, в любой момент для прерывания прикладной программы пользователь может нажать Ctrl+C или Ctrl+Break, при этом окно переводится в неактивное состояние. Установив переменную CheckBreak в значение False, вы можете запретить эту возмож ность. Специальные символы При записи в выходной файл (Output) или в файл, который назначен для окна CRT, специальное значение имеют следующие управляющие символы: ───────────────────────────────────────────────────────────────── Символ Название Описание ───────────────────────────────────────────────────────────────── #7 Звонок Вызывает звуковой сигнал, издаваемый с помощью внутреннего динамика. #8 Обратный пробел Возврат на одну позицию. Вызывает перемещение курсора влево на одну позицию. Если курсор уже находится у левого края текущего окна, то никаких действий не производится. #10 Перевод строки Перемещает курсор на одну строку вниз. Если курсор уже находится на нижней строке окна, то окно пролистывается вверх на одну строку. #13 Возврат каретки Возвращает курсор с левому краю текущего окна. ───────────────────────────────────────────────────────────────── Ввод строк При чтении из входного файла (Input) или из текстового файла, который назначен для окна CRT, текст вводится по одной строке. Строка запоминается во внутреннем буфере текстового файла и когда переменные считываются, то в качестве источника используетс я этот буфер. Каждый раз когда буфер становится пустым, вводится новая строка. При вводе строк в окне CRT можно использовать следующие клавиши редактирования: Вacksрасе - удаляет последний введенный символ, Esс - удаляет всю вводимую строку, Enter - прекр ащает ввод строки и записывает метку конца строки (возврат каретки/перевод строки) в буфере. Кроме того, можно использовать клавиши Сtrl-Z, которые генерируют символ конца файла только в том случае, если переменная CheckEof установлена в значение Truе (по умолчанию ей присвоено значение Falsе). Нажатие Ctrl-Z также завершает строку ввода и генерирует маркер конца строки. Для проверки состояния клавиатуры и ввода отдельных символов под управлением программы используйте функции KeyРressed и Rеаdkey. Переменные В модуле WinCrt описывается несколько типов констант и одна переменная. Типизованные константы имеют начальные значения. Вы можете рассматривать их, как переменные, поскольку начальные значения вы можете изменять во своему усмотрению. ───────────────────────────────────────────────────────────────── Переменная Тип ───────────────────────────────────────────────────────────────── WindowOrg TPoint WindowSize TPoint ScreenSize TPoint Cursor TPoint Origin TPoint InactiveTitle PChar AutoTracking Boolean CheakBreak Boolean CheckEof Boolean WindowTitle Boolean ───────────────────────────────────────────────────────────────── Переменная WindowOrg Определяет начальное положение окна CRT. const WindowOrg: TPoint = (X: cwUseDefault; Y: cw_UseDefault); Используемое по умолчанию расположение позволяет Windows выбитрать подходящее расположение окна CRT. Вы можете изменить начальное значение, присвоив перед созданием окна CRT новые значения координатам X и Y. Переменная WindowSize Определяет начальный размер окна CRT. const WindowSize: TPoint = (X: cwUseDefault; Y: cw_UseDefault); Используемый по умолчанию размер позволяет Windows выбирать подходящий размер окна CRT. Вы можете изменить начальный размер, присвоив перед созданием окна CRT новые значения координатам X и Y. Переменная ScreenSize Определяет ширину и высоту (в символах) виртуального экрана окна CRT. const ScreenSize: TPoint = (X: 80; Y: 25); По умолчанию экран имеет размер 80 столбцов на 25 строк. Присвоив другие значения координатам X и Y ScreenSize перед созданием окна CRT, вы можете изменить используемый по умолчанию размер экрана CRT. Значение, получаемое при произведении ScreenSize. X на ScreenSize.Y, не должно превышать 65520. Переменная Cursor Содержит текущую позицию курсора на виртуальном экране. const Cursor: TPoint = (X: 0; Y: 0); Верхний левый угол соответствует координате (0,0). Cursor - это переменная, доступная только по чтению. Присваивать ей значения нельзя. Переменная Origin Содержит координаты виртуального экрана для символа, выводимого в верхнем левом углу окна CRT. const Origin: TPoint = (X: 80; Y: 25); Origin - это переменная, доступная только по чтению. Присваивать ей значения нельзя. Переменная InactiveTitle Указывает на завершающуюся нулем строку, используемую для создания заголовка неактивного окна CRT. const InactiveTitle: PChar = '(Inactive %s)'; Эта строка используется, как параметр, управляющий форматом при вызове функции Windows WVSPrintF. Спецификатор %s указывает в случае его присутсвия, куда нужно включить существующий заголовок окна. Переменная AutoTracking Разрешает или запрещает автоматическую прокрутку окна для отслеживания видимого курсора. const AutoTracking: Boolean = True; Когда эта переменная имеет значения True, окно CRT автоматически прокручивается для обеспечения видимости курсора после каждого вызова Write или Writeln. Если AutoTracking имеет значение False, то окно CRT не будет автоматически прокручиваться, и зап исываемый в окно текст может оказаться невидимым для пользователя. Переменная ChесkEOF Переменная ChеckEOF разрешает или запрещает символ конца файла: const CheckEOF: Boolean = False; Если переменная ChеckEOF имеет значение Truе, то когда чтение производится из файла, назначенного окну CRT, при нажатии клавиш Ctrl+Z генерируется символ конца файла. Когда переменная ChеckEOF имеет значение False при нажатии клавиш Ctrl+Z никаких де йствий не выполняется. Переменная ChеckВrеak Переменная CheckВrеak разрешает или запрещает проверки ситуации Сtrl+Вreak. const CheckBreak: Boolean = True; Когда переменная ChеckВrеak принимает значение Truе, нажатие пользователем клавиш Alt+F4, выбор пользователем команды Close в меню Control окна CRT или двойное нажатие кнопки "мыши" в управляющей рамке меню Control этого окна приведет к принудительно му завершению работы прикладной программы при следующей операции вывода на экран дисплея, которую выполнит эта программа. Аналогично, нажатие клавиш Ctrl+Вrеak или Ctrl+C в любое время приостанавливает выполнение программы и переводит окно в неактивное со стояние. Установив переменную ChеckВreak в значение Falsе, эти возможности можно запретить. Переменная WindowTitle Определяет заголовок окна CRT. var WindowTitle: array[0..79] of Char; По умолчанию используется значение, равное полному имени маршрута файла .EXE программы. Записав в WindowTitle перед созданием окна CRT новое значение, вы можете изменить заголовок. Например: StrCopy(WindowTitle, 'Hello, Word'); Процедуры и функции В следующих таблицах перечисляются процедуры и функции, которые можно найти в модуле WinCrt. ───────────────────────────────────────────────────────────────── Процедура Описание ───────────────────────────────────────────────────────────────── AssignCrt Назначает текстовый файл для окна CRT. ClrEоl Очищает все символы, начиная от позиции курсора до конца строки, без перемещения курсора. ClrScr Очищает экран и помещает курсор в верхнем левом углу. CursorTo Перемещает курсор в точку на виртуальном экране с заданными координатами. DoneWinCrt Уничтожает окна CRT. GоtоХY Выполняет позиционирование курсора. Х - это горизонтальная позиция, Y - вертикальная позиция виртуального экрана. InitWinCrt Инициализирует окно CRT. ScrollTo Прокручивает окно CRT, чтобы видна была точка с заданными координатами. TrackCursor Прокручивает окно CRT, чтобы курсор был видимым. WriteBuf Выводит в окно CRT блок символов. WriteChar Выводит в окно CRT отдельный символ. ───────────────────────────────────────────────────────────────── ───────────────────────────────────────────────────────────────── Функция Описание ───────────────────────────────────────────────────────────────── KeyРrеssеd Возвращает значение Truе, если клавиша на клавиатуре нажата и Falsе - в противном случае. ReadBuf Считывает из окна CRT строку. RеаdKеу Считывает символ с клавиатуры. WherеХ Возвращает координату Х для текущей позиции курсора, относящуюся к текущему окну. Х представляет собой горизонтальную позицию. WhereY Возвращает координату Y для текущей позиции курсора, относящуюся к текущему окну. Y представляет собой вертикальную позицию. ───────────────────────────────────────────────────────────────── Далее процедуры и функции описываются более подробно. Процедура InitWinCrt Данная подпрограмма создает окно CRT, если оно еще не создано. procedure InitWinCrt; Операции Read, Readln, Write, Writeln с файлом, которому присвоено CRT, автоматически вызывают процедуру InitWinCrt для обеспечения существования окна CRT. Для определения характеристик окна CRT процедура InitWinCrt использует константы WindowOrg, Wi ndowSize и ScreenSize, а также переменную WindowTitle. Процедура DoneWinCrt Уничтожает окно CRT, если оно еще не отменено. procedure DoneWinCrt; Вызов данной процедуры перед завершением программы предотвращает переход окна CRT в неактивное состояние. Таким образом, пользователю не нужно будет закрывать окно вручную. Процедура WriteBuf Записывает в окно CRT блок символов. procedure WriteBuf(Buffer: PChar; Count: Word); Buffer указывает на первый символ блока, а Count содержит число записываемых символов. Если AutoTracking имеет значение True, то окно CRT при необходимости прокручивается, обеспечивая видимость курсора после вывода блока символов. Процедура WriteChar Записывает в окно CRT один символ. procedure WriteChar(Ch: Char); Функция KeyPressed Считывает символ с клавиатуры. function KeyPressed: Char; Эхоотображение символа на экране не выполняется. Замечание: Функция KeyPressed поддерживает только стандартные коды клавиш ASCII. Расширенные коды, генерируемые функциональными клавишапи и клавишами перемещения курсора данной функцией не поддерживаются. Функция ReadBuf Вводит строку из окна CRT. function ReadBuf(Buffer: PChar; Count: Word): Word; Buffer указывает на буфер строки, в котором имеется место для Count символов. Может вводиться до Count - 2 символов, а когда пользователь нажимает клавишу Enter, к концу строки автоматически добавляется маркер конце строки (#13 и #14). Если переменна я CheckEof имеет значение True, то пользователь может также завершить строку, нажав Ctrl+Z. В этом случае строка будет содержать маркер конца файла (#26), который присоединяется к концу строки. Возвращаемое значение равно числу считанных символов, включая маркер конца строки или конца файла, Процедура GotoXY Процедура GotoXY перемещает курсор в точку с заданными координатами виртуального экрана. procedure GotoXY(X, Y: Integer); Верхний левый угол соответствует точке с координатами (1,1). Переменная Cursor устанавливается в значение (X-1,Y-1), так как в ней хранится позиция курсора относительно точки (0,0), а не (1,1). Замечание: Процедуры GotoXY, WhereX, WhereY предусмотрены в основном для совместимости с модулем Crt, обеспечиваемым Турбо Паскалем для DOS. Координаты этих подпрограмм считаются от 1 и не совпадают с переменными модуля WinCrt. Поэтому мы рекомендуем вам использовать вместо них подпрограмму CursorTo и переменную Cursor. Функция WhereX Возвращает координату X текущей позиции курсора. function WhereX: Integer; Возвращаемое значение считается от 1 и соответствует Cursor.X + 1. Функция WhereY Возвращает координату Y текущей позиции курсора. function WhereY: Integer; Возвращаемое значение считается от 1 и соответствует Cursor.Y + 1. Процедура CrlScr Очищает экран и возвращает курсор в верхний левый угол. procedure ClrScr; Процедура ClrEol Стирает все символы от позиции курсора до конца строки. Курсор не перемещается. Процедура CursorTo Перемещает курсор в точку с заданными координатами экрана. procedure CursorTo(X, Y: Integer); Верхний левый угол экрана соответствует точке с координатами (0,0). Переменная Cursor устанавливается в значение (X,Y). Процедура ScrollTo Выполняет прокрутку окна CRT, чтобы в левом верхнем углу экрана находилать точка с координатами (X,Y). procedure ScrollTo(X, Y: Integer); Точка (0,0) соответствует верхнему левому углу виртуального экрана. Переменная Origin устанавливается в значение (X,Y). Процедура TrackCursor Прокручивает окно CRT, если необходимо обеспечить видимость курсора. procedure TrackCursor; Процедура AssignCrt Связывает с окном CRT текстовый файл. procedure AssignCrt(var F: Text); Последующие операции Write и Writeln для этого файла приведут к выводу в окно CRT, а операции Read и Readln - к считыванию из окна CRT. ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄АaJ  ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄АЩkп`▄  ▐  k  ~  А  Б   <7<ЁЁБv  Я  ╠  ╬  ╧  n  o  t  u   ╧   Ё ╧ ╨   ╤   ╬   ╧   ╨  K  L  M  U  Б  Ё БГ    V  |  └    ?  A  А  ┐  Ё ┐  <  {  }  ┴    C  v  x  ╡  Ё ╡с  %  '  N  P  Q  R  S  ╦  R  Ё Rv  x  i  н  ╔     +  I  g  Е  Ё Ег  └  ▀  ■    <  А  В  л  н  Ё н▄  ▐  #  %  √  %  '  S  U  Ы  Ё ЫЭ  d   О   Р   ▄    !  !  "  ?"  g"  Ё g"i"  з"  ╥"  ╘"  b#  К#  М#  ё#  $   $  Ё ${$  ж$  и$  %  E%  G%  &  >&  @&  Я&  Ё Я&╔&  ╦&  ╠'  (  9(  ;(  Б(  и(  к(  л)  Ё л)├)  э)  я)  A*  i*  k*  l+  m,  ╩,  Ї,  Ё Ї,Ў,  -  -  J-  L-  .  <.  >.  j.  l.  Ё l.╧.  /  4/  x/  ╖/  ╣/  ∙/  :0  [0  ]0  Ё ]0Я0  ├0  ┼0  1  ?1  A1  n1  p1  ┤1  ї1  Ё ї1*2  ,2  ]2  _2  Я2  ╫2  ┘2  3  :3  <3  Ё <3v3  x3  ╡3  ∙3  √3  ?4  `4  д4  ц4  &5  Ё &5F5  H5  ~5  А5  ╖5  ╣5  ¤5  =6  w6  Ш6  Ё Ш6Ъ6  ▐6  7  _7  г7  е7  с7  у7   8  8  Ё 8S8  o8  q8  r9  к9  ╙9  ╒9   :   :  (:  Ё (:*:  ▌:  ;  ;  2;  4;  j;  l;  Y<  В<  Ё В<Д<  н<  п<  ╘<  ╓<  ■<  =  %=  '=  H=  Ё H=J=  Б=  Г=  V>  }>  >  а>  в>  ▄>  ▐>  Ё ▐>▀?  р@  A  .A  0A  ПA  ╢A  ╕A  АB  БC  Ё БC╩C  ЁC  ЄC  )D  +D  KD  MD  ЦD  ╝D  ╛D  Ё ╛DїD  ўD  E  E  bE  КE  МE  ╩E  ╠E  фE  Ё фEцE   F  F  eF  НF  ПF  ╨F  ∙F  √F  yG  Ё yGбG  гG  H  9H  ;H  ╣H  уH  хH  0I  MI  Ё MIOI  xI  zI  жI  иI  ╨I  ╥I  `J  bJ  Ё "*10/06/9110/06/91сI▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄



Похожие:

Pas-pg.dos/Tpw14 iconДокументы
1. /Tb_c_ug.dos/1cont.txt
2. /Tb_c_ug.dos/1intr.txt
Pas-pg.dos/Tpw14 iconДокументы
1. /Td.dos/1Cont.txt
2. /Td.dos/1Glossary.txt
Pas-pg.dos/Tpw14 iconДокументы
1. /Tp6progg.dos/Pg00.txt
2. /Tp6progg.dos/Pg01.txt
Pas-pg.dos/Tpw14 iconДокументы
1. /CИСТЕМА ПРОГРАММИРОВАНИЯ НА МАКРОАССЕМБЛЕРЕ MS-DOS/A1P0.TXT
2. /CИСТЕМА...

Pas-pg.dos/Tpw14 iconДокументы
1. /Tvision.dos/Tv00.txt
2. /Tvision.dos/Tv01.txt
Pas-pg.dos/Tpw14 iconДокументы
1. /Info.txt
2. /Операционная система MS DOS....

Pas-pg.dos/Tpw14 iconДокументы
1. /Et situ'n existais pas/Et situ'n existais pas.pdf
Pas-pg.dos/Tpw14 iconДокументы
1. /Et situ'n existais pas/Et situ'n existais pas.pdf
Pas-pg.dos/Tpw14 iconДокументы
1. /Turbo_c.dos/St00.txt
2. /Turbo_c.dos/St01.txt
Pas-pg.dos/Tpw14 iconДокументы
1. /Tp6userg.dos/Ug00.txt
2. /Tp6userg.dos/Ug01.txt
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов