Шаг 60 - Сравнение хранилищ и файловой системы

Я уже говорил, что хранилища позволяют организовать каталоги и файлы в одном файле. Тем самым Вы создаете свою файловую систему. Программируя под DOS бухгалтерские программы, а в частности складского учета приходилось под каждый месяц заводить файл или каталог с проводками. Со временем этих файлов становилось все больше и больше. Переносить их было неудобно. Вы можете увидеть во многих серьезных продуктах кучу папочек, в которых куча файлов. Вот этого как раз и позволяют избежать хранилища. Я всегда за то, чтобы в программе было как можно меньше файлов. Файл с данными должен быть один. А не куча связанных. Итак, давайте сравним хранилище с файловой системой.

хранилища (storages) - каталоги
потоки (streams) - файлы

Прямая корреляция прослежваеться и при разборе функций работы с хранилищами:

Функция IStorageЭквивалентная функция прерывания 21h DOSОписание
CreateStream5Bh Создать новый файлСоздать новый поток
OpenStream3Dh Открыть файл с помощью указателяОткрыть существующий поток
CreateStorage39h Создать каталогСоздать новое хранилище
OpenStorage3Bh Сменить текущий каталогОткрыть существующее хранилище
EnumElements4Eh Найти первый файл
4Fh Найти следующий файл
Перенумеровать потоки в хранилище
RenameElement56h Переименовать файлПереименовать поток
DestroyElement41h Уничтожить файлУничтожить поток

Помимо всего прочего в файлах хранилища находится справочная информация. Эта информация видна в диалоговом окне Summary Info:

60_1.gif (6359 b)

Именно на основе этой информации и организован быстрый поиска документов в Microsoft Office. При создании хранилища этот раздел создается автоматически. Посмотрите свойства хранилища, которое мы создавали. Там то же есть этот блок.

60_2.gif (4706 b)

Данный механзм очень похож на, то как в Norton Commander можно было заполнить описание для папочки. Помните еще ??? Файл можно было создать и при просмотре видеть описание папки. Вот это практически тоже самое.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 1.03.2001