Рейтинг - 5.0 (2)

Всем хай! Мы продолжаем делать наш браузер, и сегодня нам предстоит сделать Лог последних посещаемых сайтов. Для этого удобнее будет использовать специальную библиотеку классов, которая будет выполнять действия, связанных с Лог'ом. Создадим новый проект в диспетчере проектов. Для этого выделите текущий проект, ПКМ -> Добавить -> Создать проект:

В открывающимся окне выберите "Библиотека классов" и укажем ему имя 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\n.

ВАЖНО! Символ "\n" в 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. Встретимся в новом уроке ;)

Теги: работа с файлами, Подключаем dll-библиотеку

Yurko_UA   (28.02.14 18:28)
А можна шарпівські dll використовувати в cleo скриптах?

wmysterio   (28.02.14 18:43)
на скільки я знаю, це неможливо, так як шарповські dll-ки це не win32-додатки і скомпільовані вони в Джит-коді. Я пробував через скрипт конектити таку біблітеку, але він не міг знайти адресу функції.

Yurko_UA   (28.02.14 19:04)
Погано. Якби більше інформації по можливостях використання dll в cleo скриптах...
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Как Вы относитесь к модулям сайта: фото и видео?
Всего ответов: 0
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Рекомендую
Реклама