THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму

8. ЗБЕРЕЖЕННЯ ТА ЗЧИТУВАННЯ ІНФОРМАЦІЇ

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

8.1. Відкриття файлів за допомогою оператора «Open »

Файл - іменована область будь-якого зовнішнього накопичувача інформації. Дані «живуть» в пам'яті комп'ютера, а файли - на жорсткому диску. Програма не працює з файлами безпосередньо, а використовує в якості посередника операційну систему.

Імена файлів бувають двох видів: повні - крім імені файлу вказується також місце розташування файлу на зовнішньому носії (наприклад «C: \\ Program Files \\ Microsoft Visual Studio \\ VB98 \\ VB 6.EXE») і короткі - тільки ім'я файлу (VB 6.EXE ). Якщо місце розташування файлу не вказано, то він буде шукатися в цій папці, за замовчуванням - папка, де знаходиться ваше додаток. Безпосереднє ім'я файлу складається з двох частин: власне унікальне ім'я файлу і його розширення. Власне ім'я ідентифікує файл, а розширення зазвичай вказує на формат файлу або на те, якою програмою він створений.

Перед початком роботи з файлом необхідно запросити у операційної системи покажчик (дескриптор) файлу. Для його отримання користуються функцією «FreeFile». Потім за допомогою оператора «Open» цей покажчик зв'язується з необхідним файлом. Тільки після цього програма зможе працювати з ним. Синтаксис відкриття файлу наступний:

'Отримуємо вільний покажчик файлу і присвоюємо його змінної

FileHandle% \u003d FreeFile

'откриваемфайл

Open FilePath _

As [#] FileHandle%

... (работасфайлом)

Close [#] FileHandle

· FileHandle% - змінна, в якій зберігається покажчик файлу;

· FreeFile - ім'я функції, що повертає покажчик файлу;

· Open - ім'я оператора;

· FilePath - повне ім'я файлу;

· For - ключове слово, за яким йде опис режиму доступу до файлу;

· Mode - режим доступу до файлу (див. Табл. 15);

Таблиця 15

Режими доступу до файлу

режими доступу

опис

Append

Додавання даних в кінець існуючого текстового файлу. Якщо файл не існує, він буде створений

Binary

Відкриття файлу в двійковому режимі, тобто у вигляді набору байтів. Якщо файл не існує, але буде створений

Input

Відкриття файлу для читання в текстовому форматі

Output

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

Random

Відкриття файлу в режимі довільного доступу. Такий режим використовується для роботи з простими записами. Якщо файл не існує, але буде створений

· Access - необов'язкове ключове слово, за яким слід опис типу доступу;

· AccessType - опис типу доступу:

· Read - читання;

· Write - запис;

· Read Write - читання і запис.

Примітка

При режимах доступу Append і Output доступний тільки тип доступу Write, при Input - тільки Read, а при Binary і Random доступні всі три типи доступу.

· LockType - необов'язковий параметр, що визначає, чи зможуть інші програми використовувати цей файл, поки з ним працює ваша програма. Зазвичай воно пов'язане з роботою в мережі (див. Табл. 16).

Таблиця 16

Можливі значення параметра LockType

значення

опис

Shared

До файлу матимуть повний доступ всі користувачі з необхідними правами

Lock Read

Блокується читання файлу, а запис дозволена

Lock Write

Блокується запис в файл, а читання дозволено

Lock Read Write

Забороняється і читання, і запис в нього

· As - ключове слово, за яким слід покажчик файлу.

· # - символ, який вказує, що наступне за ним значення є покажчиком файлу.

· Len - необов'язкове ключове слово, за яким має слідувати параметр, що визначає довжину запису.

· CharInBuffer% - довжина запису для файлу, відкритого в режимі довільного доступу (Random).

· Close - оператор, що закриває файл, пов'язаний із зазначеним дескриптором.

Важливо закривати файл після закінчення роботи з ним. Оператор «Close» звільняє покажчик файлу і пов'язану з ним область пам'яті.

При роботі з файлом, а саме при читанні з нього, дуже важливо визначення кінця файлу. Його можна визначити за допомогою функції EOF (End Of File):

EOF (FileHandle)

· EOF - ім'я функції;

· FileHandle - покажчик файлу, кінець якого визначається.

Функція повертає True (істина), якщо кінець файлу досягнутий, в іншому випадку повертається False (Брехня).

8.2. Читання і запис в текстовий файл

Текстовий файл відкривають у режимі доступу «Input», «Output» або «Append» (див табл. 15). Особливість цього режиму в тому, що в ньому працюють тільки з конкретними друкувати символами. Зі службовими символами працювати марно.

Для запису інформації використовують два оператора «Print» і «Write», синтаксис яких наступний:

Print # FileHandle%, VarBuffer [;]

Write # FileHandle%, VarBuffer [;]

· Print / Write - ключові слова операторів.

· #FileHandle% - покажчик файлу, в який буде поміщена інформація.

· VarBuffer - значення, яке буде записано в файл.

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

Для читання інформації з файлу застосовують оператори «Input» і «Line Input». Сінтаксісіханалогічендругдругу:

Line Input # FileHandle%, VarBuffer

Input # FileHandle%, VarBuffer

· Line Input / Input - ключові слова операторів.

· #FileHandle% - покажчик файлу, з якого буде зчитана інформація.

· VarBuffer - змінна, в яку буде зчитуватися інформація.

Різниця операторів «Line Input» і «Input» полягає в тому, що перший призначений тільки для текстових файлів, а другий - для будь-яких. У разі текстових файлів «Input» зчитує дані, що знаходяться в одному рядку, до першого роздільника (для текстових даних роздільником є \u200b\u200b«,» (кома), а для числових - «» (пропуск) і «,»), а «Line Input »зчитує відразу всю рядок, ігноруючи будь-які роздільники.

Примітка

У Visual Basic немає засобів контролю формату раніше створених файлів. Тому символ «2» може бути лічений як відповідне число і навпаки.

8.3. Робота з бінарними файлами

Файли відкриваються в бінарному форматі оператором «Open» в режимі «Binary». Відмінною рисою цього режиму є те, що робота з файлом орієнтована виключно на конкретні байти. Оскільки Visual Basic може адресуватися безпосередньо до потрібного місця файлу, цей режим також називається - режимом прямого доступу. Інша особливість цього режиму - наявність можливості одночасного запису і зчитування інформації в різні частини файлу не переоткривая його. Запис в файл, відкритий в бінарному режимі, здійснюється наступним синтаксисом:

Put # FileHandle%,, NameVar

· Put - ім'я оператора записи інформації.

· RecNumber - номер байта файлу, в який буде записана інформація (необов'язковий параметр).

· NameVar - змінна, вміст якої буде записано в файл.

Зчитування інформації з файлу в бінарному режимі відбувається за допомогою наступного оператора:

Get # FileHandle%,, NameVar

· Get - ім'я оператора записи інформації.

· FileHandle% - файловий покажчик.

· RecNumber - номер байта файлу, з якого буде зчитана інформація (не обов'язково параметр).

· NameVar - ім'я змінної, в яку буде поміщена зчитана інформація.

Оскільки бінарний режим орієнтований на байти інформації, то при читанні з файлу буферна змінна повинна мати строго певний тип: або «Byte», тоді буде лічено числове значення байта, або символьний фіксованої довжини в один символ, тоді байт буде лічений у вигляді символу, ANSI , код якого відповідає величині байта. Цей символ може бути навіть керуючий, чого не можна домогтися у випадку з текстовими файлами.

Примітка

При відсутності параметра «RecNumber» запис або зчитування інформації буде відбуватися в наступному байті файлу після того, з яким до цього працювали.

8.4. маніпуляції графікою

Зберігати в файлах і витягати з них можна і графічні зображення. Щоб витягти з реєстрового файлу або файлу піктограми і привласнити його властивості «Picture» елементів управління «PictureBox» і «Image», використовується функція «LoadPicture ()» з наступним синтаксисом:

ImageCtrl.Picture \u003d LoadPicture (FilePath)

· ImageCtrl - ім'я елемента управління вікном з малюнком, елемента управління зображенням або форми;

· LoadPicture - ім'я функції;

· FilePath - повне ім'я файлу.

SavePicture ImageCtrl .Picture, FilePath

· SavePicture - ім'я оператора;

· ImageCtrl - ім'я елемента управління вікном з малюнком, елемента управління зображенням або форми;

· Picture - ім'я властивості об'єкта, що відповідає за зображення;

· FilePath - повне ім'я файлу із зазначенням його розташування на диску.

8.5. Робота з даними в реєстрі

Для зберігання невеликих фрагментів інформації символьного формату можна використовувати реєстр Windows. У Visual Basic є чотири процедури, які можна використовувати для доступу до нього. Вони дуже прості в застосуванні, але мають один головний недолік: можна отримати доступ до даних тільки з певного розділу реєстру: «MyComputer \\ HKEY _CURRENT _USER \\ Software \\ VB and VBA Program Settings». Щоб отримати доступ до інших розділів реєстру, потрібно скористатися спеціальними функціями «Win 32 API».

Щоб отримати значення параметра з присвяченого Visual Basic розділу реєстру Windows, потрібно використовувати наступну функцію:

MyString \u003d GetSetting (VBKeyName, Section, Key [, Default])

· MyString - рядок для зберігання повертається функцією значення;

· GetSetting - ім'я функції.

· VBKeyName - строкове значення, яке є ім'ям внутрішнього підрозділу VB / VBA.

· Key - строкове значення, яке представляє ім'я параметра в розділі.

· Default - необов'язковий аргумент, значення якого буде повернуто, в разі помилки (відсутність параметра).

Для збереження деякого значення в реєстрі Windows використовується наступний оператор:

SaveSetting VBKeyName, Section, Key, MyString

· SaveSetting - ім'я оператора.

· MyString - строкова змінна, в яку буде поміщено знайдене значення.

Для отримання з реєстру масиву, що містить всі значення параметрів з певного підрозділу, використовується наступна функція:

MyVariant \u003d SetAllSettings (VBKeyName, Section)

· MyVariant - повертається функцією масив значень типу «Variant».

· SetAllSettings - ім'я функції.

· Section - строкове значення, що представляє розділ або підрозділ конкретного додатка.

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

DeleteSetting VBKeyName, Section, Key

· DeleteSetting - ім'я оператора.

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

  1. Як можна довгостроково зберігати деяку інформацію?
  2. Що таке файл?
  3. Які імена файлів ви знаєте?
  4. Наведіть синтаксис оператора «Open». Поясніть призначення його параметрів.
  5. Як можна організувати спільний доступ декількох додатків до одного файлу одночасно?
  6. Як визначити, що інформація у файлі вичерпана?
  7. Чому після роботи з файлом його рекомендується закривати?
  8. У чому ви бачите різницю режимів текстового та бінарного файлів?
  9. Як відбувається зчитування та запис даних в режимі текстового файлу?
  10. Як відбувається зчитування та запис даних в режимі бінарного файлу?
  11. У чому різниця операторів «Print» і «Write» при роботі з файлами?
  12. У чому різниця операторів «Input» і «Line Input» при роботі з файлами?
  13. Як можна працювати з графічними даними?
  14. Які основні принципи роботи з реєстром Windows?
Windows

Мета роботи: Вивчення і використання операторів мови VB 6 для роботи з файлами різних типів: Послідовними (текстовими) файлами, файлами довільного доступу, бінарними файлами. Дослідження і використання інструменту CommonDialog для відкриття та збереження файлів, вибору шрифту і кольору, а також використання об'єкта Clipboardдля зберігання фрагментів тексту, - на прикладі створення простого текстового редактора.

Контрольні питання:

1. Якими способами можна відкрити текстовий файл? Як закрити текстовий і будь-який інший відкритий файл?

2. Як записуються дані у відкритий для запису текстовий файл? У чому різниця між операторами Write і Print?

3. Як читаються дані з відкритого для читання текстового файлу? Чим відрізняються один від одного оператори Input і Line Input? За допомогою якої функції можна прочитати з файлу задане число символів? Як прочитати все символи файлу?

4. Що таке призначений для користувача тип даних і як використовується це поняття при роботі з файлами довільного доступу ( raf)?

5. За допомогою яких операторів з файлу raf читаються записи і в файл rafпишуться нові записи?

6. З якою метою визначається і використовується індекс при роботі з файлом raf?

7. Які особливості використання бінарних файлів? Як вони відкриваються? Як проводиться читання з бінарного файлу і запис в бінарний файл?

8. Як можна застосувати елемент управління CommonDialog для завантаження вмісту текстового файлу в текстове поле? Як за допомогою того ж елемента управління зберегти відредагований текст в текстовому файлі?

9. Як можна застосувати елемент управління CommonDialog для завантаження вмісту файлу rtf в полі RichTextbox? Як за допомогою того ж елемента управління зберегти відредагований текст в файлі rtf?

10. Як можна застосувати елемент управління CommonDialog для зміни значень параметрів шрифту і для зміни кольору тексту в вікні Textbox (Або виділеного фрагмента тексту у вікні RichTextbox)?

Приклад 7.1. Розглянемо додаток, яке демонструє запис в текстовий файл (і читання з текстового файлу) «відомостей про співробітників» - рядків, кожна з яких містить ідентифікаційний номер, ПІБ, дату народження і місце народження співробітника. Рядки утворюють таблицю, яку на екранній формі будуть імітувати 4 елементи управління Combo Box (рис. 7.1), що утворюють масив об'єктів Comb (i), у яких властивість Style має значення 1 - SimpleCombo.

Виділіть удаляемую рядок ", vbExclamation

Comb (j) .RemoveItem i

'Вставка нового запису в таблицю:

Private Sub mnuInsert_Click ()

i% \u003d Comb (0) .ListIndex

If i< 0 Then

MsgBox "Виділіть рядок для вставки перед нею", vbExclamation

Comb (0) .AddItem InputBox ( "Введіть номер"), i

Comb (1) .AddItem InputBox ( "Введіть фио"), i

Comb (2) .AddItem InputBox ( "Введіть дату нар."), I

Comb (3) .AddItem InputBox ( "Введіть місце нар."), I

'Зміна записи в таблиці:

Private Sub mnuUpdate_Click ()

i% \u003d Comb (0) .ListIndex

If i< 0 Then

MsgBox "Виділіть змінну рядок", vbExclamation

Comb (0) .List (i) \u003d InputBox ( "Введіть номер", Comb (0) .List (i))

Comb (1) .List (i) \u003d InputBox ( "Введіть фио", Comb (1) .List (i))

Comb (2) .List (i) \u003d InputBox ( "Введіть дату нар.", Comb (2) .List (i))

Comb (3) .List (i) \u003d InputBox ( "Введіть місце нар.", Comb (3) .List (i))

'Очищення всієї таблиці:

Private Sub mnuClear_Click ()

'Заповнення таблиці відомостями з текстового файлу:

Private Sub mnuLoad_Click ()

Open "person. Txt" For Input As # 1

Input # 1, numb, fio, bdate, bloc

Comb (0) .AddItem numb

Comb (1) .AddItem fio

Comb (2) .AddItem bdate

Comb (3) .AddItem bloc

'Запис відомостей таблиці в текстовий файл:

Private Sub mnuSave_Click ()

N% \u003d Comb (0) .ListCount

Open "person. Txt" For Output As # 1

For i \u003d 0 To N - 1

numb \u003d Val (Comb (0) .List (i))

fio \u003d Comb (1) .List (i)

bdate \u003d CDate (Comb (2) .List (i))

bloc \u003d Comb (3) .List (i)

Write # 1, numb, fio, bdate, bloc

'Завершення роботи програми:

Private Sub mnuExit_Click ()

приклад 7.2 . Розглянемо додаток, яке демонструє використання елементів управління CommonDialog для відкриття та збереження файлу, для вибору шрифту і кольору, а також для редагування тексту.

файл формату TXT буде завантажуватися в текстове поле (ліве поле на рис. 7.2), а файл формату RTF - в полі RichTextbox (Праве поле на рис. 7.2).

об'єкта

клас

об'єкта

властивість

об'єкта

значення властивості

"Панелі загального

діалогу "

Закладка Open / Save As

Закладка Font

Закладка Color

У таблиці не предствавлени властивості команд меню Font, Color і Edit. Нижче наводиться код процедур також лише для команд меню File (Open, Save і SaveAs). Складання коду для інших команд меню - тема 2-го завдання даної роботи.

Private Sub mnuOpen_Click ()

CommonDialog1.ShowOpen

F $ \u003d CommonDialog1.FileName

If Right (F, 3) \u003d "rtf" Then

RichTextBox1.LoadFile F

ElseIf Right (F, 3) \u003d "txt" Then

Open F For Input As # 1

S $ \u003d Input (N, 1)

Private Sub mnuSave_Click ()

CommonDialog1.ShowSave

F $ \u003d CommonDialog1.FileName

Private Sub mnuSaveAs_Click ()

CommonDialog1.ShowSave

F $ \u003d CommonDialog1.FileName

RichTextBox1.SaveFile F, rtfRTF

В ході виконання даної роботи студент повинен виконати 2 завдання.

Завдання 1. У процесі виконання завдання студенти освоюють наявні в VB 6 можливості роботи з файлами довільного доступу ( RAF -randomaccessfile).

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

Зокрема реалізуються процедури для команд меню Записати в файлRAF і Читати з файлуRAF. Як і в прикладі 7.1, для редагування даних використовується масив об'єктів ComboBox і меню Edit з п'ятьма командами підміню: Додати запис, видалити запис, вставити запис, змінити запис, Очистити таблицю.

Варіант 1.

Оголосити призначений для користувача тип даних для таблиці «Автомобіль» (табл. 7.1) бази даних «Автосервіс».

автомобіля

автомобіля

несправності

У нижньому рядку таблиці 7.1 - типи полів.

Варіант 2.

Оголосити призначений для користувача тип даних для таблиці «Несправності» (табл. 7.2) бази даних «Автосервіс».

несправності

Назва

несправності

вартість

У нижньому рядку таблиці 7.2 - типи полів.

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

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

Варіант 1 CommonDialog реалізувати команди меню Font і Color (З підміню колір символів і Колір фону). За допомогою цих команд має забезпечуватися вибір шрифту (його найменування, накреслення і розміру) для виділеного фрагмента тексту у вікні RichTextbox, А також вибір кольору символів виділеного фрагмента і вибір кольору фону всього цього вікна.

вказівка: Під час налаштування об'єкта CommonDialog для вибору шрифту за допомогою властивості (Custom) обов'язково слід встановити значення властивості Flags рівним 1, 2 або 3 (див. посібник, стор. 183).

Варіант 2. За допомогою елемента управління CommonDialog реалізувати команди меню Edit (підміню Copy, Cut і Paste), Призначенням яких є копіювання або видалення в буфер обміну виділеного фрагмента тексту, а також вставка в виділене місце тексту вмісту буфера обміну.

вказівка: До буферу обміну (об'єкту Clipboard) Можна застосовувати методи SetText і GetText:

Clipboard. SetText RichTextBox1.SelText

RichTextBox1.SelText \u003d Clipboard. GetText

Кожна програма повинна зберігати дані на диск і читати їх з диска. Це необхідно, наприклад, для збереження налаштувань програми, навряд чи користувачу сподобається програма, яку при наступному запуску доведеться налаштовувати заново.

У даній статті мова піде про роботу з текстовими файлами засобами Visual Basic.

дескриптор файлу

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

У Visual Basic існує функція FreeFile, Яка повертає номер вільного каналу, який можна використовувати для роботи з файлом. Якщо вільних каналів немає, то виникає помилка.

FreeFile [(RangeNumber) ]

RangeNumber -необязательний параметр, який дозволяє визначити діапазон значень вільних каналів, якщо RangeNumber \u003d 0 (за замовчуванням), то повертається номер каналу з діапазону 1 - 255, а якщо 1, то з діапазону 256 - 511.

MyFile \u003d FreeFile "Перемінної MyFile присвоєно вільний канал і тепер її можна використовувати для роботи з файлами

Робота з текстовими файлами

Найбільш часто доводиться зустрічатися з текстовими файлами. Текстові файли складаються з набору символів ASCII (American Standard Code for Information Interchange - Американський стандартний код для обміну інформацією).

Перш ніж почати записувати / зчитувати дані, файл необхідно відкрити, робиться це за допомогою оператора Open (Ім'я файлу) For As #Номер_файла, Де:

Input - відкрити файл для читання, якщо файл не існує, то виникає помилка;

Output - для запису, якщо файл не існує, то він буде створений, а якщо файл існує, то він буде перезаписаний;

Append - для додавання, якщо файл не існує то він буде створений, а якщо файл існує, то дані будуть додаватися в кінець файлу.

читання текстових файлів можна проводити двома способами: читати посимвольний, для цього використовується функція Input (Колічество_счітиваемих_сімволов, #Номер_файла) і через підрядник, для цього використовується функція Line Input #Номер_файла, Куда_счітивать.

Dim MyFile

Dim S As String "Змінна для зберігання лічених даних

MyFile \u003d FreeFile

Open ( "C: \\ TEST.txt") For Input As #MyFile

Line Input #MyFile, S "Прочитуємо перший рядок з файлу TEST.TXT в змінну S

Dim MyFile "Оголошуємо змінну для вільного файлу

Dim i As Integer "Змінна для циклу

Dim tS As String "Змінна для зчитування рядків

Dim S As String "Змінна для зберігання остаточних даних

MyFile \u003d FreeFile "Надаємо вільний канал, для роботи з файлами

"Відкриваємо файл TEST.TXT для читання

For i \u003d 1 To 5

Line Input #MyFile, tS "Читаємо файл TEST.TXT через підрядник

If i \u003d\u003e 5 Then S \u003d tS "Якщо п'ятий рядок, то запам'ятовуємо її в змінну S

Next i

Close #MyFile "Закриваємо файл

Dim MyFile "Оголошуємо змінну для вільного файлу

Dim S As String "Змінна для зберігання лічених даних

MyFile \u003d FreeFile "Надаємо вільний канал, для роботи з файлами

Open ( "C: \\ TEST.txt") For Input As #MyFile "Відкриваємо файл TEST.TXT для читання

S \u003d Input $ (LOG (1), 1) "Прочитуємо весь файл в змінну S

Close #MyFile "Закриваємо файл

Для запису в файл існують оператори Print #Номер_файла, дані і Write #Номер_файла, дані. Відрізняє ці оператори тільки те, що Write записує дані в лапках, а Print без лапок.

Нижче наступний код створить на диску C: \\ новий файл TEST.TXT і запише в нього два рядки, першу без лапок, а другу в лапках:

Dim MyFile "Оголошуємо змінну для вільного файлу

MyFile \u003d FreeFile "Надаємо вільний канал, для роботи з файлами

Open ( "C: \\ TEST.txt") For Output As #MyFile "Відкриваємо файл TEST.TXT для запису

Print #MyFile, "Цей рядок записана оператором Print, вона без лапок ..."

Write #MyFile, "Цей рядок записана оператором Write, вона в лапках ..."

Close #MyFile "Закриваємо файл

Ось власне і все. Як ви вже напевно зрозуміли, для закриття файлу служить оператор Close #Номер_файла, при цьому, # Номер_файла вказувати не обов'язково.

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

THE BELL

Є ті, хто прочитали цю новину раніше вас.
Підпишіться, щоб отримувати статті свіжими.
Email
ім'я
Прізвище
Як ви хочете читати The Bell
без спаму