Чтение онлайн

на главную - закладки

Жанры

Программирование на Visual C++. Архив рассылки

Jenter Алекс

Шрифт:

Но сгенерированный MSIL нельзя выгрузить. Единственный способ выгрузить код – это выгрузить из памяти приложение целиком. Это значит, что занимаемые скомпилированным регулярным выражением ресурсы нельзя освободить, даже если сам объект Regex уже освобожден и уничтожен сборщиком мусора.

Из-за этого казуса приходится задумываться – стоит ли компилировать регулярные выражения с опцией 'с', и если да, то какие и сколько. Если приложение должно постоянно использовать множество регулярных выражений, придется обойтись интерпретацией. А вот если есть несколько постоянно используемых регулярных выражений, можно и

скомпилировать их для ускорения работы.

Для повышения производительности Regex кэширует в памяти все регулярные выражения. Поэтому повторного разбора при каждом очередном использовании не происходит. Такой подход несколько уменьшает разницу в производительности компилируемых и интерпретируемых регулярных выражений.

Приложение RegExpTest

В качестве примера использования регулярных выражений мы создали .Net-приложение, использующее регулярные выражения для поиска в тексте.

Рис.2. Приложение RegExpTest

Мода – великая вещь, поэтому писать приложение следует не на Java, не на VB, а на C#. Это модно, и доказывает, что автор не стоит на месте, а работает над собой.

Отрывки кода этого примера приведены в Листинге 1. Само приложение можно скачать с нашего ftp-сайта.

Листинг 1. Использование регулярных выражений в C#

// Класс для хранения информации о найденном вхождении

protected class MyItem {

 public MyItem(string Match, int Index, int Len) {

this.Match = Match;

this.Index = Index;

this.Len = Len;

 }

 public override string ToString {

return Index.ToString + ", " + Len.ToString + ", " + Match;

 }

 public string Match;

 public int Index;

 public int Len;

}

protected void Parce {

 int iCountMatchs = 0;

 try {

// Очищаем лист-бокс

listBox1.Items.Clear;

statusBar1.Text = "Parsing…";

// создаем объект re, задавая в его конструкторе

// шаблон и опции

Regex re = new Regex(tbPattern.Text, tbOptions.Text);

// Выполняем поиск заданного выше шаблона внутри

// текста и текстового поля

tbTextForSearch MatchCollection mc = re.Matches(tbTextForSearch.Text);

iCountMatchs = mc.Count;

//
Выводим информацию о количестве найденных вхождений…

statusBar1.Text = "Load list (" + iCountMatchs.ToString + ")…";

// …и заносим информацию о них в лист-бокс.

listBox1.BeginUpdate;

foreach(Match m in mc) {

// Для хранения информации о найденном вхождении

// мы используем созданный нами класс MyItem.

// Элементы управления (типа лист-бокса) в .Net

// позволяют хранить вместо текстового значения

// объект, а при отображении текста в строке вызывают

// метод – ToString. Так что объект любого класса,

// реализующего метод ToString, может выступать в

// качестве элемента лист-бокса.

listBox1.Items.Add(new MyItem(m.ToString, m.Index, m.Length));

}

 } catch(Exception e1) {

MessageBox.Show(e1.ToString, "Error");

 } finally {

listBox1.EndUpdate;

statusBar1.Text = "Done " + iCountMatchs.ToString;

 }

}

Заключение

Это только краткое ведение в регулярные выражения и их использование. Если вы хотите лучше разобраться в этом, попробуйте потренироваться в создании регулярных выражений самостоятельно. Практика показывает, что разбор чужих регулярных выражений практически бесполезен, читать их почти невозможно. Однако лучше научиться пользоваться ими – это часто упрощает жизнь.

ВОПРОС – ОТВЕТ 

Как вывести на экран картинку в JPEG/GIF/PNG/др. формате?

7 способов как это сделать

Автор: Павел Блудов

Демонстрационное приложение (WTL) DrawImg (50kb)

Сегодня практически все программы используют различные картинки в качестве элементов интерфейса. Даже существует API функция ::LoadImage, умеющая загружать файлы в формате bmp, ico и cur. Этого достаточно для панелей управления и диалогов. Но если размер картинки превышает 100x100 пикселов и их нужно несколько, файлы формата bmp использовать не удобно. Хочется что-то вроде jpg или gif.

Тут ::LoadImage нам уже не помошник. Придется использовать специальные библиотеки. Наибольшей популярностью пользуются:

Independent JPEG Group

Portable Network Graphics

TIFF Software

Intel(R) JPEG Library

Image Library

CXImage

Small JPEG Decoder Library

Все они хорошо документированны и снабжены примерами. Подробное рассмотрение этих библиотек займет слишком много времени и выходит за рамки этой статьи. Давайте лучше уделим внимание некоторым специальным API, предназначенным для работы с файлами изображений.

Поделиться:
Популярные книги

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Свет Черной Звезды

Звездная Елена
6. Катриона
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Свет Черной Звезды

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

Идеальный мир для Лекаря 22

Сапфир Олег
22. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 22

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад