Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Ishodniki.Ru » Online книги » C++ Builder по шагам Шаг 49 - Класс TFileStream. Понятие потока VCL. Вот мы и дошли до этого класса. Сначала я бы хотел бы дать некоторое вступление по поводу поточных классов VCL. Эти классы есть некоторое подобие альтернативы поточным классам C++. Как обычно в таких случаях с VCL, основной TStream класс никто впрямую не использует, от него можно только наследовать. Прямым потомком TStream является класс THandleStream, который некоторым образом интегрирован с оболочкой (я в смысле - Виндовсом). Дело в том, что в WinAPI есть такая категория функций, которые выдают (или используют в качестве параметра) дескрипторп потока. Как раз таким дескриптором и обладает класс THandleStream. Как обычно, все функции, предоставляемые API, довольно сложны в использовании, и загромождают программу ненужными ухищрениями. Поэтому и был создан этот самый класс. Собственно от THandleStream произведен только класс TFileStream. Остальные из категории поточных произведены от TStream. Ну, мы рассматриваем TFileStream, так что этим и займемся. HandleСвойство, унаследованное от THandleStream. Определяет дескриптор потока. Этот дескриптор используется в вызовах функций WinApi. А, еще про WinAPI. Вот, мне писал один человек, как бы это получить активность с COM-порта. В принципе активность можно получить с любого порта, LPT, RS232 или еще чего. Правда последний - тот же COM в более современном исполнении. Есть такая функция WaitCommEvent. В данном случае Comm - не ошибка, а аббревиатура communication device. Так вот, она через Handle порта позволяет ждать от него активности. Для нее наш дескриптор тоже подходит. Создавать файл нужно как одно из имен типа COM1, COM2, COM3, LPT1 и так далее. Для связи с VxD устройствами необходим путь типа "\\.\a". Последний открывает дескриптор для дисковода [a:]. Связь с портами - довольно обширная тема. Поэтому я рассмотрю ее позже. SizeСодержит информацию о размере потока (в байтах). Можно установить это свойство для того, чтобы "обрезать" поток. Должен заметить, что не рекомендуется использовать это свойство с портами и именованными pipe. Pipe - механизм, обеспечивающий двунаправленный поток, туннель данных между процессами. PositionСвойство, определяющее текущую позицию указателя потока. Более четко - количество считанных байтов от начала потока. Теперь нужно и методы рассмотреть. Конструктор TFileStreamЭтот конструктор использует два параметра - имя создаваемого файла (AnsiString) и режим открытия. режим открытия задает типы операций и права доступа, применимые к данному объекту. Могут быть следующие значения, комбинируемые с помощью binary or оператора "|".
Read, Write, SeekПервые два в качестве параметра используют преременную void* и целое, определяющее длину считываемой/записываемой порции данных. Ну а Seek вообще очень похоже на fseek. Вот примеры использования функции: TFileStream* stream=new TFileStream("c:\\test.txt",fmOpenReadWrite|fmShareExclusive) //на всякий случай займем этот файл как эксклюзив ;) stream->Seek(0,soFromBeginning); В общем-то ничего другого и нет. Пример использования TFileStream будет дан в следующем шаге. |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|