69087

ВИКОРИСТАННЯ СТАНДАРТНИХ КОМПОНЕНТІВ В ПРОЕКТІ

Лекция

Информатика, кибернетика и программирование

В цій лекції ми розглянемо як реалізувати обробку функцій текстового редактора з використанням стандартних компонентів .Net Framework, які називають вікнами діалогу. Вікно діалогу - це модальна форма, її розміри не можна змінювати.

Украинкский

2014-09-29

74.2 KB

2 чел.

12

ЛЕКЦІЯ 7. ВИКОРИСТАННЯ СТАНДАРТНИХ КОМПОНЕНТІВ В ПРОЕКТІ

План

7.1. Відкриття файлу - OpenFileDialog

7.2. Збереження файлу -  SaveFileDialog

7.3. Вибір шрифту  - FontDialog

7.4. Вибір кольору - ColorDialog

7.5. Друкування файлу – PrintDialog

7.6. Обробка подій кнопок панелі інструментів

7.7. Завершення роботи програми та інші події

7.8. Виведення повідомлень - MessageBox

В цій лекції ми розглянемо як реалізувати обробку функцій текстового редактора з використанням стандартних компонентів .Net Framework, які називають вікнами діалогу.

Вікно діалогу - це модальна форма, її розміри не можна змінювати. Крім того, в цих вікнах не використовуються елементи, що поміщаються у верхню частину звичайних форм: ControlBox, MinimizeBox і MaximizeBox.

Стандартні вікна діалогу OpenFileDialog, SaveFileDialog, FontDialog,  ColorDialog зосереджені в закладці Dialog Toolbox.

Стандартні вікна діалогу для друкування файлу – в закладці Printing.

Для того, щоб ці компоненти можна було використовувати в програмі, потрібно їх "перетягти" на форму. Вони розміщуються в невидимій частині форми (лотку).

Спочатку створимо дві глобальні змінні класу форми, які будемо використовувати в різних методах.

public partial class Form1 : Form

   {

       private string fn = string.Empty;  // им'я файла

       private bool docChanged = false; // true - в текст внесено зміни

.....

}

Внесемо, також зміни в конструктор форми:

Властивість FileName задає назву файлу, яка знаходитиметься в полі "Ім'я файлу" при появі діалогу. Встановимо значення FileName ="".

Властивість Filter задає обмеження файлів, які можуть бути вибрані для відкриття, — у вікні будуть показані лише файли із заданим розширенням. Через вертикальну роздільну лінію можна задати зміну типу розширення, що відображується у випадаючому списку "Тип файлів".

Тут введемо Text Files (*.txt)|*.txt|All Files(*.*)|*.* що означає огляд або текстових файлів, або всіх.

Призначимо, також властивості Title для діалогів відкриття і збереження файлу.

Зробимо ці призначення в конструкторі форми.

Лістинг 7.1.

      public Form1()

       {

           //Створення форми

           InitializeComponent();

           textBox1.ScrollBars = ScrollBars.Vertical;

           textBox1.Text = string.Empty;

           this.Text = "NkEdit - Новий документ";

           // вивести панель инструментов

           toolStrip1.Visible = true;

           панельІнструментівToolStripMenuItem.Checked = true;

           // налаштування компонента openDialog1

           openFileDialog1.DefaultExt = "txt";

           openFileDialog1.Filter = "(*.txt)|*.txt|All Files(*.*)|*.* ";

           openFileDialog1.Title = "Відкрити документ";

           openFileDialog1.Multiselect = false;

           // налаштування компонента saveDialog1

           saveFileDialog1.DefaultExt = "txt";

           saveFileDialog1.Filter = "(*.txt)|*.txt|All Files(*.*)|*.* ";

           saveFileDialog1.Title = "Зберегти документ";

}

Для виведення діагностичний повідомлень (попереджень, повідомлень про помилки, тощо) використовується стандартний статичний клас MessageBox.

7.1. Відкриття файлу - OpenFileDialog 

Додамо на форму діалог OpenFileDialog з вікна панелі інструментів ToolBox.

Переходимо в код форми. Підключаємо простір імен для роботи з файловими потоками:

using System.IO;

Реалізуємо код діалогу відкриття файлу у вигляді закритого методу  OpenDocument() для того, щоб викликати його з меню і з панелі інструментів, не дублюючи код.

Лістинг 7.2.

//Відкрити документ

      private void OpenDocument()

      {

           openFileDialog1.FileName = string.Empty;

           // Відобразити діалог відкриття файлу

           if (openFileDialog1.ShowDialog() == DialogResult.OK)

           {

               fn = openFileDialog1.FileName;

               // відобразити им'я файла у заголовку вікна

               this.Text = fn;

               try

               {

                   // читання даних з файлу

                   System.IO.StreamReader sr =

                       new System.IO.StreamReader(fn);

                   textBox1.Text = sr.ReadToEnd();

                   textBox1.SelectionStart = textBox1.TextLength;

                   sr.Close();

               }

               catch (Exception exc)

               {

                   MessageBox.Show("Помилка читання файла.\n" + exc.ToString(), "NkEdit",

                       MessageBoxButtons.OK,

                       MessageBoxIcon.Error);

               }

          }

     }

В цьому методі команда

openFileDialog1.ShowDialog

відкриває вікно діалогу для пошуку і відкриття файлів. В змінній FileName повертається назва вибраного файлу. В об'єкті DialogResult. повертається true, якщо користувач натиснув кнопку OK.

Отже, якщо користувач натиснув кнопку OK, змінній fn призначається значення FileName, виконується читання файлу в текстове поле редактора.

При помилці читання файлу генерується переривання (виключення) і керування переходить в блок catch обробки переривання.

Додаємо обробник для команди  меню Відкрити:

//Відкрити...

private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

      {

          OpenDocument();

}

Такий саме обробник додаємо для кнопки панелі інструментів

private void openToolStripButton_Click(object sender, EventArgs e)

{

   OpenDocument();

}

7.2. Збереження файлу -  SaveFileDialog

Для збереження файлів додаємо на форму елемент управління saveFileDialog1. Властивості цього діалогу такі самі, як в OpenFileDialog. Роботу з цим діалогом реалізуємо в методі SaveDocument.

Лістинг 7.3.

     // Зберегти документ - закритий метод

       private int SaveDocument()

       {

           int result = 0;

           if (fn == string.Empty)

           {

               // відобразити діалог Зберегти

               if (saveFileDialog1.ShowDialog() == DialogResult.OK)

               {

                   // відобразити им'я файла у заголовку вікна

                   fn = saveFileDialog1.FileName;

                   this.Text = fn;

               }

               else result = -1;

           }

           // зберегти файл

           if (fn != string.Empty)

           {

               try

               {

                   // отримуємо інформацию про файл fn

                   System.IO.FileInfo fi = new System.IO.FileInfo(fn);

                   // створюємо потік для запису (перезаписуємо файл)

                   System.IO.StreamWriter sw = fi.CreateText();

                   // записуємо дані

                   sw.Write(textBox1.Text);

                   // закриваємо потік

                   sw.Close();

                   result = 0;

               }

               catch (Exception exc)

               {

                   MessageBox.Show(exc.ToString(), "NkEdit",

                       MessageBoxButtons.OK,

                       MessageBoxIcon.Error);

               }

           }

           return result;

       }

Додаємо обробник для команди  меню Зберегти:

//Зберегти...

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

   SaveDocument();

}

Такий саме обробник додаємо для кнопки панелі інструментів

//кнопка Зберегти (save) - використовуємо закритий метод SaveDocument();

private void saveToolStripButton_Click(object sender, EventArgs e)

{

   SaveDocument();

}

7.3. Вибір шрифту  - FontDialog

Стандартний  компонент FontDialog дозволяє  вибирати шрифт та його параметри для всього тексту. Для цього властивості текстового поля призначається значення, яке повертає властивіть компоненту:

textBox1.Font = fontDialog1.Font;

Код обробника меню Шрифт:

//Меню шрифт

       private void шрифтToolStripMenuItem_Click(object sender, EventArgs e)

       {

           fontDialog1.Font = textBox1.Font;

           if (fontDialog1.ShowDialog() == DialogResult.OK)

           {

               textBox1.Font = fontDialog1.Font;

           }

 }

7.4. Вибір кольору – ColorDialog

Додамо в меню параметри команду Колір для вибору кольору тексту. В обробник команди додамо виклик діалогу colorDialog.

private void колірToolStripMenuItem_Click(object sender, EventArgs e)

       {

           if (colorDialog1.ShowDialog() == DialogResult.OK)

               textBox1.ForeColor = colorDialog1.Color;

       }

Для зміни кольору тексту в редакторі застосуємо властивість ForeColor:

    

          textBox1.ForeColor = colorDialog1.Color;

7.5. Друкування файлу – PrintDialog

Для організації друкування  та його налаштування призначені відповідні стандартні компоненти.

Перетягуємо на форму з вікна ToolBox елементи: PrintDocument, PageSetupDialog, PrintPreviewDialog і PrintDialog. Подібно до інших діалогів, вони відображуються на панелі компонентів в середовищі Visual Studio .NET.

При друці формується одна або декілька сторінок, за які відповідає об'єкт PrintDocument.

Елементи управління PageSetupDialog, PrintPreviewDialog і PrintDialog є діалоговими вікнами параметрів сторінок, попереднього перегляду і друку відповідно.

Спочатку у вікні Властивості призначимо для властивості Document елементів PageSetupDialog і PrintPreviewDialog значення властивості Name елементу PrintDocument — printDocument1. Тим самим ми зв'язуємо об'єкт printDocument1, що відповідає за формування сторінок друку, з діалоговими вікнами. Це можна зробити і в коді форми.

Для роботи з друком в бібліотеці .NET Framework застосовується клас System.Drawing.Printing, тому його потрібно підключити на самому початку роботи:

using System.Drawing.Printing;

У класі форми оголошуємо наступні глобальні змінні

       int pagesPrinted = 0;              //номер поточної сторінки, що друкується

       string bufOut = "";                //буфер для виводу тексту

В обробнику команди меню Друкувати спочатку записуємо вміст текстового поля в буфер bufOut для того, щоб можна було обчислити кількість рядків у файлі.  Замість цього можна скористатися властивостями файлу.

Потім встановлюємо в 0 кількість надрукованих сторінок.

Далі створюємо об'єкт pd класу PrintDocument.

Команда

         pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

встановлює властивості PrintPage поточное значення кількості надрукованих сторінок. Подія PrintPageEventHandler виникає при закінченні кожної сторінки. При цьому для кожної сторінки викликається метод pd_PrintPages.

Потім викликається вікно діалогу друкування.

Лістинг 7.4.

//Друкувати...

private void друкуватиToolStripMenuItem_Click(object sender, EventArgs e)

{

   //Організація діалогу друкування

   bufOut = textBox1.Text;

   this.pagesPrinted = 0;

   PrintDocument pd = new PrintDocument();

   pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

   printDialog1.ShowDialog();

}

Обробник команди меню Попередній перегляд відрізняється від друкування тільки  викликом діалогу попереднього перегляду.

Лістинг 7.5.

//==============================================================================

private void попереднійПереглядToolStripMenuItem_Click(object sender, EventArgs e)

{

   //попередній перегляд

   bufOut = textBox1.Text;

   this.pagesPrinted = 0;

   PrintPreviewDialog ppd = new PrintPreviewDialog();

   PrintDocument pd = new PrintDocument();

   pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

   ppd.Document = pd;

   ppd.ShowDialog();

}

Для друкування однієї сторінки тексту розроблено метод pd_PrintPages.  Друкування виконується в графічному режимі, тому сторінка є графічним  об'єктом. В цьому методі спочатку  обчислюється область друку на сторінці (розміри верхнього і нижнього полів), текст буфера розбивається на рядки  і обчислюється кількість рядків. Далі розраховується кількість рядків на сторінці  для встановленого шрифта.

Інформація про сторінку знаходиться в об'єкті Graphics.

Лістинг 7.6.

private void pd_PrintPages(object sender, PrintPageEventArgs e)

{

   float yPos = 0;

   float leftMargin = e.MarginBounds.Left;

   float topMargin = e.MarginBounds.Top;

   string line = null;

   //розбиваємо текст на рядки і обчислюємо їх кількість

   string[] split = bufOut.Split(new Char[] { '\n' });

   int nLines = split.Length; //число строк

   //розраховуємо кількість рядків на сторінці

   int linesPerPage = (int)(e.MarginBounds.Height / this.Font.GetHeight(e.Graphics));

   int lineNo = this.pagesPrinted * linesPerPage;

   //друкуємо кожен рядок з масиву

   int count = 0;

   while (count < linesPerPage && lineNo < nLines)

   {

       line = split[count];

       yPos = topMargin + (count * this.Font.GetHeight(e.Graphics));

       e.Graphics.DrawString(line, this.Font, Brushes.Black, leftMargin, yPos, new StringFormat());

       lineNo++;

       count++;

   }

   if (nLines > lineNo)

       e.HasMorePages = true;

   else

       e.HasMorePages = false;

   pagesPrinted++;  //подсчет напечатанных страниц

}

7.6. Обробка подій кнопок панелі інструментів

Кнопки панелі інструментів дублюють відповідні команди меню. І кнопки і команди меню генерують власні події, наприклад, Click.

Для того, щоб не дублювати код обробників можна:

1. Написати закритий метод класу, який реалізує обробку події і викликати цей метод з обробника меню і обробника кнопки. Цей спосіб ми застосовували для відкриття і збереження файлу.

2. Застосувати делегати. Тут делегати відіграють роль покажчиків на функцію.

Наприклад, обробник меню Про програму має вигляд:

//Довідка про програму - власна форма

       private void мояДовідкаToolStripMenuItem_Click(object sender, EventArgs e)

       {

        //створення об'єкту класу і записк форми як модального діалогу

           MyHelp myform = new MyHelp();

           myform.ShowDialog();

       }

Обробник кнопки на панелі інструментів містить тільки посилання на потрібний обробник

//кнопка Help - виклик власного вікна про програму

private void helpToolStripButton_Click(object sender, EventArgs e)

{

   мояДовідкаToolStripMenuItem_Click(this, new EventArgs());

}

Делегат використовується і для роботи з новим файлом – команда меню Новий.

Лістинг 7.7.

//Обробники подій Click при виборі команд меню       

//новий документ

   private void новийToolStripMenuItem_Click(object sender, EventArgs e)

      {

          //меню Новий документ

          if (docChanged)

          {

              DialogResult dr;

              dr = MessageBox.Show(

                                    "Зберегти зміни?", "NkEdit",

                                    MessageBoxButtons.YesNoCancel,

                                    MessageBoxIcon.Warning);

              switch (dr)

              {

                  case DialogResult.Yes:

                      if (SaveDocument() == 0)

                      {

                          textBox1.Clear();

                          docChanged = false;

                      }

                      break;

                  case DialogResult.No:

                      textBox1.Clear();

                      docChanged = false;

                      break;

                  case DialogResult.Cancel:

                      //

                      break;

              };

          }

      }

В обробнику кнопки панелі інструментів використовується делегат – показчик на обробник меню

//Кнопка Новий - new

private void newToolStripButton_Click(object sender, EventArgs e)

       {

        //виклик обробника меню Новий, генеруємо нову подію

        новийToolStripMenuItem_Click(this, new EventArgs ());

}

7.7. Завершення роботи програми та інші події

7.7.1. Завершення роботи програми

Вихід з програми виконується при виборі команди меню Вихід. При цьому потрібно перевірити, чи збережені останні зміни у файлі.

Лістинг 7.8.

//Вихід

//Обробник команди меню Вихід - завершення роботи програми

private void вихідToolStripMenuItem_Click(object sender, EventArgs e)

{

   //Завершення роботи - перевірити чи збережені зміни у файлі

   if (docChanged)

   {

       DialogResult dr;

       dr = MessageBox.Show("Зберегти зміни?", "NkEdit",

                             MessageBoxButtons.YesNoCancel,

                             MessageBoxIcon.Warning);

       switch (dr)

       {

           case DialogResult.Yes:

               SaveDocument();

               this.Close();

               break;

           case DialogResult.No:

               this.Close();

               break;

           case DialogResult.Cancel:

               // відмінити закриття вікна програми

               break;

       };

   }

   this.Close();

}

7.7.2. Обробка події зміни файлу

При кожній дії з текстом у вікні генерується подія TextChanged, її обробка полягає у встановленні глобальної змінної в true. Перевірка значення цієї змінної виконується при завершенні роботи.

      //Текст у вікні редактора змінився - обробник події TextChanged

       private void textBox1_TextChanged(object sender, EventArgs e)

       {

          docChanged = true;

 }

7.7.3. Закриття вікна у заголовку форми

При закритті форми через системну кнопку у заголовку форми генерується подія FormClosing. Для того, щоб зв'язати обробник з подією, потрібно його встановити у вікні подій форми для цієї події. Тоді при закритті форми буде перевірятися, чи змінювався текст у вікні.  

Лістинг 7.9.

// Користувач натиснув на формі кнопку "Закрити вікно" у Заголовку

       private void Form1_FormClosing(object sender, FormClosingEventArgs e)

       {

           if (docChanged)

           {

               DialogResult dr;

               dr = MessageBox.Show("Зберегти зміни?", "NkEdit",

                                     MessageBoxButtons.YesNoCancel,

                                     MessageBoxIcon.Warning);

               switch (dr)

               {

                   case DialogResult.Yes:

                       if (SaveDocument() != 0)

                           // користувач відмінив операцію збереження файлу

                           e.Cancel = true; // відмінити закриття вікна програми

                       break;

                   case DialogResult.No: ;

                       break;

                   case DialogResult.Cancel:

                       // відмінити закриття вікна програми

                       e.Cancel = true;

                       break;

               };

           }

}

7.8. Виведення повідомлень - MessageBox

Для виведення діагностичних повідомлень використовується стандартний статичний клас MessageBox.

Метод Show цього классу виводить текст повідомлення користувачу.

Приклад:

MessageBox. Show(“Hello!”);

Прототип методу має вигляд:

public static DialogResult Show(string message);

   

Метод Show повертає результат типу DialogResult.

Коли користувач клацає кнопку ОК, метод Show повертає значення, рівне DialogResult.OK. Це значення можна використати в програмі для перевірки дій користувача (яку кнопку він натиснув, щоб закрити форму).

Існує багато перегружених методів класу MessageBox.Show. Крім тексту повідомлення, можна задати інші параметри, наприклад, параметр caption дозволяє задати текст заголовка діалогового вікна MessageBox.

За допомогою параметра btns можна вказати, які кнопки необхідно розташувати у вікні діалогового вікна. Цей параметр задається константами з переліку MessageBoxButtons (табл. 7.1).

Таблиця 7.1. Можливі значення параметра btns

Константа

Кнопки, які відображаються у вікні MessageBox

ОК

OK

OKCancel

OK, Cancel

YesNo

Yes, No

YesNoCancel

Yes, No, Cancel

RetryCancel

Retry, Cancel

AbortRetryIgnore

Abort, Retry, Ignore

Параметр icon методу MessageBox.Show дозволяє вибрати один з декількох значків для розташування в лівій частині діалогового вікна. Він задається у вигляді константи з переліку MessageBoxIcon (рис. 7.1):

Константа

Значок

Asterisk, Information

Error, Stop

Exclamation, Darning

Question

None

Значок не виводиться

Рис. 7.1. Можливі значення MessageBoxIcon

Параметр defButton методу MessageBox.Show призначений для вибору кнопки, яка отримає фокус відразу після відображення діалогового вікна. Цей параметр повинен мати одне із значень з переліку MessageBoxDefaultButton (табл. 7.2):

Таблиця 7.2. Можливі значення MessageBoxDefaultButton

Константа

Номер кнопки, яка одержує фокус вводу за замовчанням

Button l

1

Button 2

2

Button 3

3

Якщо в діалоговому вікні відображаються кнопки Yes, No і Cancel, то вони будуть пронумеровані послідовно: кнопка Yes отримає номер 1 (константа Button1), кнопка No - номер 2 (константа Button2), а кнопка Cancel - номер 3 (константа Button3).

Якщо у вікні MessageBox є декілька кнопок, то для того, щоб визначити, яку кнопку клацнув користувач, програма повинна проаналізувати значення, яке повертає метод MessageBox.Show.

Метод MessageBox.Show може повернути одне з декількох значень з переліку DialogResult (табл.7.3):

Таблиця 7.3. Можливі значення DialogResult

Константа

Кнопка, при виборі якої повертається ця константа

Abort

Abort

Cancel

Cancel

Ignore

Ignore

No

No

None

Модальне вікно діалогу продовжує працювати

OK

OK

Retry

Retry

Yes

Yes

Приклад:

   DialogResult result = MessageBox.Show(" Видалити дані  \n по працівнику? ",

     "Попередження", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,

       MessageBoxDefaultButton.Button2);

Висновки

Для прискорення створення програм в Visual Studio використовується багато стандартних компонентів, доступ до яких реалізується через їхні інтерфейси. Ці інтерфейси реалізовані у вигляді полів і методів відповідних класів, з якими може працювати програма. Прикладом таких компонентів є стандартні вікна діалогу, вікна виведення діагностичних повідомлень. Ці готові компоненти є наочним прикладом застосування компонентного підходу, реалізованого в .Net Framework. 

Контрольні питання і завдання для самостійного виконання

  1.  В якій змінній повертається результат роботи стандартного вікна діалогу?
  2.  Яким чином реалізувати зберігання даних в файлі? Яке вікно діалогу для цього використати?
  3.  Яким чином можна встановити фільтр для огляду певних типів файлів? Яку властивість і якого класу потрібно налаштувати?
  4.  Яку властивість потрібно задати для того, щоб вивести назву файлу у вікні діалогу?
  5.  Як реалізувати діалог відкриття файлу?
  6.  Як реалізувати діалог збереження файлу?
  7.  Як реалізувати діалог роботи із шрифтами?
  8.  Як реалізувати друкування файлу?
  9.  Як реалізувати попередній перегляд файлу?
  10.   Як реалізувати виведення вікна повідомлення про помилку, в якому розміщений заголовок «Помилка», текст повідомлення, значок і кнопка ОК?

 

А также другие работы, которые могут Вас заинтересовать

69688. ОПЕРАТОР ЕКВІВАЛЕНТНОСТІ (===) 28 KB
  Іноді звичайний оператор порівняння == працює не зовсім коректно, точніше не так, як нам хочеться, в деяких ситуаціях навіть виходять міні-анекдоти. Розглянемо наступний приклад...
69689. СПИСКИ 46 KB
  За замовчуванням елементи впорядкованого списку нумеруються цілими числами починаючи з. До тега нумерованого списку існує атрибут TYPE. Встановлюючи TYPE рівним можна змінити схему нумерації на великі літери, малі літери, великі або малі римські цифри відповідно.
69690. ФРЕЙМИ 87.5 KB
  Мета: опанувати технологію представлення інформації у документі з використанням фреймів. Фрейми (Frames - кадри) надають користувачеві можливість поділяти екран на дві або більше незалежних динамічних або статичних частини.
69691. Параметри за умовчанням 61 KB
  Функції повинні повертати значення різних типів залежно від набору параметрів. Що ж до другої причини то в З у С можна перенавантажувати функції взагалі неможливо змінити тип значення що повертається. Параметри за умовчанням описуються так...
69692. Локальні і глобальні змінні 53.5 KB
  Локальні змінні доступні тільки у функції а глобальні доступні у всій програмі. Локальні і глобальні змінні Змінні i і g глобальні вони доступні у всій програмі. Для передачі глобальних змінних у функцію використовується інструкція...
69693. Рекурсія 23 KB
  Механізм рекурсії одночасно дуже корисний, але і дуже небезпечний. При створенні рекурсивних функцій потрібно бути особливо уважним, щоб уникнути зациклення. Наступна функція викличе зациклення...
69694. Принцип роботи механізму Cookies 141.5 KB
  Чому небезпечно зберігати пароль в Cookies Отримавши від сервера Cookie-змінну браузер зберігає її на диску у відкритому вигляді тобто не кодуючи її. Крім того в деяких браузерах Cookies взагалі зберігаються в звичайному текстовому файлі а деякі навіть дозволяють проглянути їх.
69695. ТАБЛИЦІ 462.5 KB
  Мета: навчитись представляти інформацію у HTML-документі у вигляді таблиць. Табличні теги мови HTML дозволяють подавати дані у зручній для сприйняття формі. Основним структурним елементом таблиці є комірка, яка містить елемент даних таблиці або заголовок стовпчика даних.
69696. Отримання частини масиву 48.5 KB
  Дана функція повертає частину вказаного масиву, починаючи з вказаного зсуву від початку масиву. Вибірка елементів здійснюється підряд. Довжина результуючого масиву задається параметром Довжина, який є необов’язковим. Якщо цей параметр не вказаний, то вибірка елементів здійснюється до кінця початкового масиву.