IDK1011 Click to edit Master title style Основы программирования Диалоговые окна Чтение файлов и директорий Диалоговые окна • • • • • Выбор файла (OpenFileDialog) Сохранение файла (SaveFileDialog) Выбор шрифта (FontDialog) Выбор цвета (ColorDialog) Выбор параметров печати страницы (PageSetupDialog) OpenFileDialog.ShowDialog() OpenFileDialog.FileOk() -- event OpenFileDialog.FileName() Работа с файлами • Поковое чтение - IO.StreamReader • Потоковая запись – IO.StreamWriter Dim sr As New IO.StreamReader(“C:/inputs.txt”) • Поток (Stream) • Текущая позиция в потоке • Конец потока Режимы чтения / записи • Буферизованный (Buffered) Чтение: данные из потока читаются в буфер (область памяти). Программа читает этот буфер и производит необходимые операции над данными. Запись: программа записывает данные в буфер, откуда после они заносятся в поток. • Прямой (Direct) Чтение: чтение данных напрямую из потока (например, чтение строки) Запись: запись данных напрямую в поток Режимы чтения / записи • Синхронный (synchronous) Каждая последующая операция чтения/записи осуществляется только после завершения предыдущей операции. • Асинхронный (asynchronous, async) Каждая последующая операция чтения/записи осуществляется в момент запроса (в момент запуска соответствующего метода), не дожидаясь завершения предыдущих вызовов. Часто нужна синхронизация. Чтение файлов • Прямой режим чтения: Read() – возвращает следующий символ из потока и передвигает указатель текущей позиции в потоке на следующий ReadAsync() – то же самое что и Read(), только в асинхронном режиме. • Буферизованный режим чтения: ReadBlock() – читает заданное число символов из потока и записывает их в буфер по указанному смещению. ReadBlockAsync() – то же что и ReadBlock(), только в асинхронном режиме. Чтение файлов • Проверка конца потока Peek() – возвращает следующий символ в потоке но не перемещает указатель текущей позиции. Если следующего символа нет (достигли конца потока) – то возвращает -1. If sr.Peek() = -1 Then ‘ достигли конца потока End If • Признак того что мы достигли конца файла! Чтение файлов • Чтение строки из потока ReadLine() – Читает символы один за другим из потока пока не встретит символ конца строки. • Что такое признак конца строки? CR (Сarrige Return) LF (Line Feed) CRLF – последовательность байт 0x0D 0x0A Не \0 – это признак конца строки в памяти. • Возвращает строку String Чтение файла построчно Dim filePath As String Dim sr As IO.StreamReader Dim str As String filePath = “C:\Users\user\Desktop\file.txt” sr = New IO.StreamReader(filePath) While sr.Peek() <> -1 str = sr.ReadLine(); End While Label1.Text = str Чтение директорий • Класс IO.Directory EnumerateDirectories(path) – коллекция всех директорий в заданной директории EnumerateFiles(path) – коллекция всех файлов в заданной директории EnumerateFileSystemEntries(path) – коллекция всех файлов и директорий в заданной директории Exists(path) – возвращает true, если файл или дректория указанная в параметре path существует в файловой системе Чтение директорий GetDirectories(path) – массив всех директорий в заданной директории GetFiles(path) – массив всех файлов в заданной директории GetFileSystemEntries(path) – массив всех файлов и директорий в заданной директории CreateDirectory(path) – создает все дерево каталогов в указанном пути Delete(path) – удаляет пустую директорию указанную в path Move(source, destination) – перемещает файл или директорию вместе с ее содержимым из source в destination Чтение директорий -- пример Dim files As Collections.Generic.IEnumerable(Of String) Dim path As String path = “C:\users\user\Desktop” files = IO.Directory.EnumerateFiles(path) For each file As String In files ListBox1.items.Add() Next Чтение директорий -- пример Dim files As Collections.Generic.IEnumerable(Of String) Dim path As String path = “C:\users\user\Desktop” files = IO.Directory.EnumerateFiles(path) For each file As String In files ListBox1.items.Add(file) Next ??? Повторение пройденного • Компоненты Кнопка (размеры, позиция, надпись, события) Текстовое поле (значение, события) Выпадающий список (элементы, выбранный элемент, события) Полоса прокрутки (типы, границы значений, значения, шаг) Таймер (свойства, запуск/остановка, события) Меню (2 типа меню, составление, обработка событий) Список (элементы, добавление, выбранный элемент) Повторение пройденного • Функции и процедуры. Сходства и различия. • Передача параметров в функцию ( по значению, по ссылке, различия ) Какие значения будут у a и b? Dim a As Integer, b As Integer Public Sub init() Dim a As Integer, b As Integer a = 1 : b = 2 : x(a,b) MsgBox("a = " & a & " b = " & b) x(a,b) MsgBox("a = " & a & " b = " & b) End Sub Public Sub x(ByRef a, ByVal b) a=5:b=5 End Sub Повторение пройденного Классы и объекты Конструктор класса Методы класса (режимы доступа) Область видимости переменных. Переменные класса и переменные методов • Переменная объекта • Создание объекта • • • • • Пример (калькулятор)