Робота з файлами

Open Шлях For Режим [Access Доступ] [Блокування] As [#] НомерФайла [Lеn = Довжина]

Шлях - рядковий вираз, що вказує ім'я файлу

Режим - встановлює режим роботи з файлом. Допустимі Значення: Append, Binary, Input, Output або Random

Доступ - встановлює операції, дозволені з відкритим файлом. Можна вибрати зі значень Read, Write або Read Write

Блокування - встановлює операції, дозволені з відкритим файлом іншим процесам. Допустимі значення:

Shared, Lock Read, Lock Write і Lock Read Write і номерФайла - допустимий номер файлу. Число в інтервалі від 1 до 255. Зверніть увагу на те, що параметру Номер-файлу передує символ #. Значення номерФайла не можна змінювати, поки файл відкритий. Але при наступному відкритті файлу номерФайла може бути іншим числом

довжина - число, менше або рівне 32 767 (байт). Для файлів, відкритих в режимі Random, це значення є довжиною записи. Для файлів з послідовним доступом це її параметром є число буферизованих символів Про інструкцію open важливо також знати, що під час її роботи VBA також резервує файловий буфер в пам'яті комп'ютера для прискорення процесу запису і зчитування (пряме записування інформації на диск може істотно уповільнити виконання програми, що особливо помітно при роботі з великими файлами). Максимальне число файлових буферів встановлюється в системному файлі Config.sys

Наведемо приклад використання інструкції input # для зчитування даних з файлу. У цьому прикладі передбачається, що на диску існує файл группаЕкономістов, що містить інформацію про студентів. Файл був створений за допомогою інструкції write # і складається з двох стовпців, в першому з яких вказується прізвище, а в другому - оцінка студента. Для зручності роботи з інформацією введений призначений для користувача тип Студенти. Процедура прімеріспользованіяInput послідовно зчитує прізвища та оцінки з файлу і виводить їх в осередки першого і другого шпальти робочого листа.

'Прізвище As String * 20

Оцінка As String * 3

Dim Студент As Студенти

For Input As 12 i = 1

Do While Not EOF (2) With Студент

Input # 2. Прізвище. оцінка

Cells (i, 1) .Value = .Фамілія

Cells (i, 2) .Value = .Оцінка

Наведемо приклад використання інструкції Line input # для зчитування даних з файлу группаЕкономістов, що має ту ж структуру, що і в попередньому прикладі, але створеного за допомогою інструкції Print #. Інструкція Line input # зчитує всю рядок з файлу в строкову змінну. Тому в цьому випадку вже немає необхідності використовувати введений призначений для користувача тип, а досить обмежитися лише звичайною строкової змінної. Вся прочитується інформація рядок за рядком вводиться в список діалогового .Окна.

Private Sub UserForm_Initialize ()

Dim Студент As String

Clear Do While Not EOF (l)

Line Input 11, Студент

Робота з файлом довільного доступу

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

Як видно з наведеного в попередньому розділі прикладу для зчитування інформації за допомогою інструкції input # з файлу группаЕкономістов, файл послідовного доступу іноді зручно задавати як послідовність записів (в даному випадку, записів про студентів), причому кожна із записів формується з групи полів (в даному випадку з полів Прізвище і оцінка). Відзначимо, що таке угрупування по записах не є чимось властивим файлів послідовного доступу. Це просто підхід, що дозволяє спростити процес послідовного зчитування записів. У файлі послідовного доступу існує тільки одна внутрішня структура, утворена роздільниками (комами або спеціальними символами, які позначають перехід на новий рядок).

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

При створенні файлу довільного доступу вказується максимальна довжина кожного запису. Само собою зрозуміло, що в будь-який запис можна вводити дані, що займають не всі місце, виділене для запису, але не можна ввести дані, що вимагають більше місця, ніж допустима довжина запису. Зайва інформація буде просто усікається.

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

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

Наведемо один, приклад роботи з файлом довільного доступу група Економістів, який має ту ж структуру, що і в попередньому прикладі. Файл створюється за допомогою процедури запісьвоайл, яка послідовно зчитує дані з першого і другого шпальти робочого листа і потім вводить їх в файл. У цій процедурі число вводяться записів фіксоване і дорівнює 5. Процедура Счітиваніеізфайла виробляє зворотну дію - зчитує дані з файлу і вводить їх в осередки третього і четвертого стовпця робочого листа. Цікавою особливістю файлу довільного доступу є те, що при роботі з ним можна визначити число записів не перераховуючи їх. Число записів дорівнює відношенню розміру файлу до довжини запису. Довжина запису встановлюється при створенні файлу довільного доступу і визначається типом змінної, за допомогою якої файл був створений, розмір відкритого файлу повертається функцією LOF, а ще не відкритого - функцією FileLen. В даному випадку число записів в файлі одно LOF (l) / Len (Студент).

Прізвище As String * 20 Оцінка As String * 3

Dim Студент As Студенти

Dim i As Integer

For Random As # 1 Len = Len (Студент)

Прізвище = Cells (i, 1) .Value .Оцінка = Cells (i, 2) .Value

Наступний приклад дозволяє в поле зі списком діалогового вікна вивести список всіх файлів поточної папки:

Private Sub UserForm_Initialize ()

ComboBoxl.Clear With Application.FileSearch

FileName = "* .xls" .SearchSubFolders = False

sortorder: = msoSortOrderAscending)> 0 Then

For i = 1 To .FoundFiles.Count

Попередня програма відображає в поле зі списком повні імена файлів, т. Е. Ім'я файлу і шлях. Для того щоб в списку відображалися тільки імена файлів (без шляху), програму необхідно модифікувати таким чином:

Private Sub UserForm_Initialize ()

Dim ІмяПапкі As String

Dim имяфайла As String

Dim ДлінаПуті As Integer

ComboBoxl.Clear ІмяПапкі = CurDir ДлінаПуті = Len (ІмяПапкі)

With Application.FileSearch .FileName = "* .xls"

If .Execute (SortBy: = msoSortByFileName,

sortorder: = msoSortOrderAscending)> 0 Then

For i = 1 To .FoundFiles.Count

Имяфайла = Right (.FoundFiles (i), Len (.FqundFiles (i))

- ДлінаПуті - 1) ComboBoxl.Addltem имяфайла

Чи знаєте Ви, що таке уявний експеримент, gedanken experiment?
Це неіснуюча практика, потойбічний досвід, уява того, чого немає насправді. Уявні експерименти подібні снам наяву. Вони народжують чудовиськ. На відміну від фізичного експерименту, який є досвідченою перевіркою гіпотез, "уявний експеримент" фокусніческі підміняє експериментальну перевірку бажаними, що не перевіреними на практиці висновками, маніпулюючи логікообразнимі побудовами, реально порушують саму логіку шляхом використання недоведених посилок в якості доведених, тобто шляхом підміни. Таким чином, основним завданням заявників "уявних експериментів" є обман слухача або Новомосковсктеля шляхом заміни реального фізичного експерименту його "лялькою" - фіктивними міркуваннями під чесне слово без самої фізичної перевірки.
Заповнення фізики уявними, "уявними експериментами" призвело до виникнення абсурдною сюрреалістичної, заплутано-заплутаною картини світу. Справжній дослідник повинен відрізняти такі "фантики" від справжніх цінностей.

Релятивісти і позитивісти стверджують, що "уявний експеримент" вельми корисний Інтрументи для перевірки теорій (також виникають в нашому розумі) на несуперечливість. У цьому вони обманюють людей, так як будь-яка перевірка може здійснюватися лише незалежним від об'єкта перевірки джерелом. Сам заявник гіпотези не може бути перевіркою свого ж заяви, так як причина самого цієї заяви є відсутність видимих ​​для заявника протиріч в заяві.

Це ми бачимо на прикладі СТО і ОТО, що перетворилися на своєрідний вид релігії, керуючої наукою і громадською думкою. Ніяке кількість фактів, що суперечать їм, не може подолати формулу Ейнштейна: "Якщо факт не відповідає теорії - змініть факт" (В іншому варіанті "- Факт не відповідає теорії? - Тим гірше для факту").

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

Експеримент на те і експеримент, що він їсти не витончені думки, а перевірка думки. Несуперечлива всередині себе думка не може сама себе перевірити. Це доведено Куртом Геделем.

НОВИНИ ФОРУМУ
Лицарі теорії ефіру