Доброго здоровья!
Познакомился с этой темой в принципе давно, читая книгу Джона Уокенбаха, но поверхностно. За последнее время здесь было несколько тем по работе с текстовыми файлами. Одна из них «Сохранение файла с нужным разделителем» набрала ~ 30000 просмотров т.е пользователей интересует вопрос работы с текстовыми файлами. Я знаю, что с ними можно работать и на языке VBScript. С нового года стал изучать VBScript, но пришлось отвлечься и попробовать до конца разобраться с работой в режиме прямого доступа. Предполагаю, что принципы работы одинаковые (только операторы, функции разные) поэтому потом будет легче разбираться с VBScript. К великому моему сожалению найти статьи, где все разложено по полочкам, мне не удалось. В книге Джона тоже маловато написано. Здесь ничего не нашел. На сайте Дмитрия Щербакова в разделе хитрости нашел и бегло прочитал несколько статей (некоторые тонкости хорошо обьяснены), но по вопросу этой темы статья скудная. Нашел пару подходящих статей, и то в них есть некоторые противоречия. Строго следуя завещаниям великого Ленина, исходя из лозунга «Учиться, учиться и ещё раз учиться» стараюсь разобраться, но в связи с тем, что не являюсь «профи» остались некоторые вопросы. Очень прошу помочь начинающему программисту разобраться, и ответить на вопросы изложенные ниже.
Есть 5 режимов работы Input, Output, Append, Binary, Random. Первые три объединяются в группу Sequential. В книге Джона написано, что для VBA интерес представляет только режимы последовательного доступа. С чем я не совсем согласен. Думаю, что бинарный режим тоже нужен, в определенных случаях. Больше всего проблем в изучении вызвал произвольный режим.
1 Во первых это связано с тем, что не знаю, что такое записи (определение) Или понятие записи в разных ситуациях разные понятия? ( Часто встречаю это понятие в статьях)
2 Ключевое слово Len в команде Open используется только в режиме Random?
3 Если мы не знаем длину записи, то не сможем открыть в режиме Random, файл записанный в режиме Random?
4 Вроде разобрался как заменить определенные символы в файле, увеличить размер файла не переписывая в другой, а вот как обрезать например конец файла (несколько символов) без перезаписи файла (т.е. создания другого файла меньшего размера) так и не понял. Или это невозможно в этих режимах?
5 Почему так редко применяют эти режимы для работы с текстовыми файлами? (Есть какие то ограничения например: нельзя работать с сетевыми дисками, маленькая скорость считывания или что-нибудь еще)
6 Все ли верно написано в тексте ниже:
Функции ввода-вывода низкого уровня (прямого доступа) осуществляют обмен с файлами или периферийными устройствами путем прямого обращения к соответствующим функциям операционной системы (системным вызовам). Отличительные особенности средств прямого доступа к файлам следующие.
1. Они не предоставляют возможности буферизации информации при пересылке.
2 Они не обеспечивают преобразования данных из внутреннего машинного представления в текстовый формат.
3 Они дают возможность перемещать указатель текущей позиции в потоке на нужный байт.
4 При низкоуровневом открытии файла с ним связывается файловый дескриптор. Дескриптор является целым значением, характеризующим размещение информации об открытом файле во внутренних таблицах операционной системы. Дескриптор используется при последующих операциях с файлом.
Познакомился с этой темой в принципе давно, читая книгу Джона Уокенбаха, но поверхностно. За последнее время здесь было несколько тем по работе с текстовыми файлами. Одна из них «Сохранение файла с нужным разделителем» набрала ~ 30000 просмотров т.е пользователей интересует вопрос работы с текстовыми файлами. Я знаю, что с ними можно работать и на языке VBScript. С нового года стал изучать VBScript, но пришлось отвлечься и попробовать до конца разобраться с работой в режиме прямого доступа. Предполагаю, что принципы работы одинаковые (только операторы, функции разные) поэтому потом будет легче разбираться с VBScript. К великому моему сожалению найти статьи, где все разложено по полочкам, мне не удалось. В книге Джона тоже маловато написано. Здесь ничего не нашел. На сайте Дмитрия Щербакова в разделе хитрости нашел и бегло прочитал несколько статей (некоторые тонкости хорошо обьяснены), но по вопросу этой темы статья скудная. Нашел пару подходящих статей, и то в них есть некоторые противоречия. Строго следуя завещаниям великого Ленина, исходя из лозунга «Учиться, учиться и ещё раз учиться» стараюсь разобраться, но в связи с тем, что не являюсь «профи» остались некоторые вопросы. Очень прошу помочь начинающему программисту разобраться, и ответить на вопросы изложенные ниже.
Есть 5 режимов работы Input, Output, Append, Binary, Random. Первые три объединяются в группу Sequential. В книге Джона написано, что для VBA интерес представляет только режимы последовательного доступа. С чем я не совсем согласен. Думаю, что бинарный режим тоже нужен, в определенных случаях. Больше всего проблем в изучении вызвал произвольный режим.
1 Во первых это связано с тем, что не знаю, что такое записи (определение) Или понятие записи в разных ситуациях разные понятия? ( Часто встречаю это понятие в статьях)
2 Ключевое слово Len в команде Open используется только в режиме Random?
3 Если мы не знаем длину записи, то не сможем открыть в режиме Random, файл записанный в режиме Random?
4 Вроде разобрался как заменить определенные символы в файле, увеличить размер файла не переписывая в другой, а вот как обрезать например конец файла (несколько символов) без перезаписи файла (т.е. создания другого файла меньшего размера) так и не понял. Или это невозможно в этих режимах?
5 Почему так редко применяют эти режимы для работы с текстовыми файлами? (Есть какие то ограничения например: нельзя работать с сетевыми дисками, маленькая скорость считывания или что-нибудь еще)
6 Все ли верно написано в тексте ниже:
Функции ввода-вывода низкого уровня (прямого доступа) осуществляют обмен с файлами или периферийными устройствами путем прямого обращения к соответствующим функциям операционной системы (системным вызовам). Отличительные особенности средств прямого доступа к файлам следующие.
1. Они не предоставляют возможности буферизации информации при пересылке.
2 Они не обеспечивают преобразования данных из внутреннего машинного представления в текстовый формат.
3 Они дают возможность перемещать указатель текущей позиции в потоке на нужный байт.
4 При низкоуровневом открытии файла с ним связывается файловый дескриптор. Дескриптор является целым значением, характеризующим размещение информации об открытом файле во внутренних таблицах операционной системы. Дескриптор используется при последующих операциях с файлом.