Основной раздел
Программирование
C#
000150. Подключаем dll-библиотеку, работа с файлами
Подключаем dll-библиотеку, работа с файлами||wmysterio|wmysterio|[email protected]|/||Всем хай! Мы продолжаем делать наш браузер, и сегодня нам предстоит сделать Лог последних посещаемых сайтов. Для этого удобнее будет использовать специальную библиотеку классов, которая будет выполнять действия, связанных с Лог'ом. Создадим новый проект в диспетчере проектов. Для этого выделите текущий проект, ПКМ -> Добавить -> Создать проект:
В открывающимся окне выберите "Библиотека классов" и укажем ему имя BrowserLib:
Нажимает "Ок". Мы создали проект, который пока пустой и не содержит нужного функционала. Чтобы мы могли использовать эту библиотеку, мы должны сохранить её. Нажимаем на иконку дискеток:
Переименуем наш класс на более понятое название, например: BrowserLog. Чтобы это было быстрее, достаточно в окне проекта выделить наш класс и нажать клавишу F2, которая уже давно в ОС Windows является горячей клавишей "переименовать":
нажимаем мышью где-либо и у нас появится сообщение: "Идет переименование файла..."
Соглашаемся на эту процедуру и все ссылки на это имя класса будут переименованы во всём проекте. Теперь мы можем приступать к написанию этой dll-ки. С чего начать? Ну раз класс, по-идеи, должен сохранять последние ссылки, то они должны где-то хранится. По-этому, как вариант, я предлагаю их хранить в файле, заодно и изучим работу с ними :) Создадим в проекте библиотеки новый файл, для этого в BrowserLib нажимаем ПКМ ->Добавить->Создать элемент:
Более простой вариант - горячие клавиши CTRL+SHIFT+A. В появившемся окне, выбираем "Текстовый файл", указываем ему имя "Log.txt" и нажимаем "Ок":
Мы прикрепили файл к нашему проекту, но нужно сделать ещё одну манипуляцию - автоматически создаваемый файл при компиляции проекта. Для этого выберем созданный текстовый файл и нажмём свойства и укажем полю "Копировать в выходной каталог" применим пункт "Всегда копировать":
Сохраняем проект и переходим к редактированию кода библиотеки. Чтобы работать с файлами, нам необходимо подключить библиотеку. Пишем:
using System.IO;
Чтобы не геммороиться с созданием объектов этого класса, предлагаю сделать 2 статичных метода, которые будут записывать и читать файл. Начнём с записи в файл: 1) Создадим метод "AddMessage", который будет добавлять запись в Лог:
public static void AddMessage( string Text ) { // Здесь будет код! }
Далее идёт непосредственно сам процесс записи. Структуру файла я предлагаю сделать такой:
ДАТА_СОЗДАНИЯ|ТЕКСТ
Чтобы мы могли легко читать данные с файла я отделил текст и дату сепаратором "|". А сам процесс записи такой:
File.AppendAllText( "Log.txt", Text + "\r\n" );
Вначале указывается путь к файлу. Так как как файл автоматически будет создаваться в директории с программой, то ничего лишнего сюда добавлять не понадобилось. После этого указывается строка, которая будет дописана в файл. Чтобы отделить строки, я добавил к тексту ещё и перенос строки \r. ВАЖНО! Символ "" в c# поддерживается частично и данном случаи он не будет переносить строки. Чтобы записать ещё и дату, нужно воспользоваться структурой DateTime. Процесс получения текущей даты выглядит следующим образом:
DateTime.Today.ToShortDateString()
Чтобы обезопасить себя от исключений и ошибок влепим этот код в блок try. Сама процедура будет содержать такой код:
try { File.AppendAllText( "Log.txt", DateTime.Today.ToShortDateString() + "|" + Text + "\r\n" ); } catch { return; }
Таким образом, если каким-то макаром файл не удастся открыть, то процесс записи будет пропущен. Процесс чтения. Начнём с того, как написать метод? Прежде всего Есть метод, который возвращает массив строк и выглядит он таким образом:
File.ReadAllLines( "Log.txt" );
Таким образом можно сформировать такой статический метод:
public static string[] GetMessages() { // Здесь будет процесс чтения }
Нужно также помнить, что если файла не существует, то программа вызовет исключение по данному поводу и приведёт к краху браузера, по этому этот код лучше заточить в блок try. Весь метод будет віглядить так:
public static string[] GetMessages() { try { return File.ReadAllLines( "Log.txt" ); } catch { return null; } return Lines; }
Если файл не удастся открыть, то метод возвратит null. Компилируем нашу библиотеку (клавиша F6) и сохраняем проект. Нам осталось только применить нашу библиотеку и посмотреть работает ли она :) Переходим в проект браузера и в обработчике событий кнопки добавим код:
private void button1_Click( object sender, EventArgs e ) { try { webBrowser1.Url = new Uri( textBox1.Text ); BrowserLog.AddMessage( textBox1.Text ); label1.Text = ""; } catch { label1.Text = "Неверное имя ссылки!"; } }
Чтобы компилятор видел нашу процедуру, нам необходимо включить её в проект. Для этого переходим в Управление проектом, Ссылки ->ПКМ->Добавить ссылку:
В открывающемся окне выбираем вкладку "Проекты"
Выбираем созданный ранее проект библиотеки и нажимаем "Ок". Теперь нам нужно подключить её программно:
using BrowserLib;
Всё, можно делать тест! Я перешел по 4-м разным сайтам и открыт файл "Log.txt", который находился в папке "WebForm\bin\Debug" и получил следующий результат:
Все ссылки успешно записались в Лог-файл! Что-же, на этом пожалуй окончу урок. В следующем мы рассмотрим такие темы, как вызов другой формы из первой, компонент ListBox. Встретимся в новом уроке ;) |1598|1|0|24265069png62414440092\|07302869png275191|43327562png587258400175\|42212840png19977|63947792png499173400138\|60434137png83316240077|43133982png481132400109\|06149403png303135|98741504png25479\|27122640png473223399188|44644833png600202400`134||podkljuchaem_dll_biblioteku|1392773268
Copy link
Edit on GitHub