Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Нестандартные приемы программирования Delphi - Ревич Ю.

Ревич Ю. Нестандартные приемы программирования Delphi — Спб.: БХВ-Петербург, 2005. — 560 c.
ISBN 5-94157-686-2
Скачать (прямая ссылка): nestandartniepriemiprogrammirovanie2005.djvu
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 218 >> Следующая

наглядности мы сделали программу в стиле Turbo Pascal - в DOS с ее 640
Кбайт памяти приходилось все, по возможности, держать на диске и
подгружать в память только тогда, когда данные нужны непосредственно в
текущей операции. Нечего и думать было о том, например, чтобы загрузить
файл в память целиком, а потом что-то с ним делать- "out of memory" вам
было обеспечено. В Windows с ее 4 Гбайт виртуальной памяти это,
разумеется, непростительная глупость- у меня на компьютере стоит 512
Мбайт ОЗУ, которые даже прожорливой Windows ХР обычно используются едва
на треть, и туда уместится практически любой файл. И дело тут не в самом
по себе быстродействии дисковой подсистемы. Можете себе представить, что
происходит, когда мы задаем чтение очередных двух байт: процедура
обращается к драйверу, драйвер- к контроллеру, контроллер шарит по
таблице расположения файлов в начальной области диска, находит базовый
кластер, откуда начинается наш файл, потом находит по цепочке связанных
ссылок конкретный кластер, где хранятся нужные данные, потом переносит
головки туда, считывает этот кластер (или даже несколько их целым блоком
- в современных дисках с 7200 об/мин никто отдельными кластерами читать
не будет, слишком неэкономично) в кэш диска, потом драйвер переносит эти
данные в оперативную память, выбирает из них нужные нам два байта - и так
каждый раз! Можно, конечно, было бы считать файл в строку через ту же
blockread одним блоком (величина файла при поиске известна), или поручить
все это системе. К данному важному вопросу мы еще не раз будем
188
Глава 8
возвращаться (см. главы 14 и 21). Когда мы ранее читали DOC-файл, мы так
же отмечали этот момент, но там это было не так критично, потому что файл
был всего один.
Результаты работы программы над папкой с некоторыми документами автора
приведены на рис. 8.5. Всего в папке было 280 файлов, большую часть
которых составляли, естественно, документы Word, так что в результирующем
списке оказалось всего 59 наименований. На машине с процессором Athlon
1700 МГц и диском 7200 об/мин процесс занял 30 секунд - кошмар!
42. C:\DOK\cnaM.txt кодировка: ASCИ
43. C:VDOKMJ*eramRelcom кодировка: Wml25i
44. C:\DORCASIO QV-2800.btm кодировка: ASCII
45. C:\DOiaCASIO QV-2900iitni кодировка: ASCII
46. C:\DOK\CampaclFlMhJiUn кодировка; Winl25l
47. C:\DOK\CompftctF1ash + SmartMadUuhtm кодировка:
48. C:\IX) K\HTMLirtni кодировка: ASCII
49. C:\DOK\OLYMPUS CAMKD1A C-700UZ.htm кодировка: ASCII
50. C:\DOK\BPJitm кодировка: Wml2Sl
51. С:М)ОК\УРСС_ Москва Jitm кодировка: Wtnl251
52. С:ШОК\КАСКАДсЛоскодировка:ASCII
53. C:\DOK\KACKAJJbJag кодировка: ASCII
54. C:\DOK\Ancharovl.hKni кодировка: Шл125!
55. С:\ООЮКниги.ш кодировка: AbtJ25l
56. C:\DOK\Docl.htonI кодировка:ASCU
57. C:\DOKVRaplay.txt кодировка: Winl25l
58. C:\DOK\masiage.html кодировка: KOl-3
59. C:\DOK\malotokJiti3il кодировка: Winl25l
Просмотрено 59
В дальнейшем мы будем улучшать эту программу: введем в нее линейку-
индикатор процесса поиска, добавим просмотр вложенных папок, возможность
обращения к файлам прямо из программы, избавимся от опостылевшего
RichEdit, ускорим чтение и, в конце концов, преобразуем ее в локальный
поисковик, который, разумеется, до уровня Google Desctop Search дотянуть
не удастся, но, тем не менее, он будет вполне работоспособен.
Искать!
Найдено:
41. C:\DOK\mdm3camv.inf ходщ.овкл: ACCU
Рис. 8.5. Результаты работы программы Kodirovka
Unicode и другие звери
189
Форматы в буфере обмена (попытка доработки перекодировщика)
В принципе, мы теперь знаем путь, на котором можно довести до
работоспособности в Windows ХР перекодировщик Layout из главы 5 - можно
просто включить в него переключатель раскладки для того приложения, в
котором происходит перекодировка. Тогда русский текст должен вставляться
нормально. Однако это "лобовое" решение довольно некрасиво - я, например,
терпеть не могу никаких автоматических переключателей раскладки.
Очевидное решение заключается в том, чтобы как-то разместить в буфере
обмена вместе с текстом указание на то, что он русский. Только как это
сделать? Вот очень изящный метод специально "для чайников": разместить на
форме невидимый RichEdit и "пропустить" текст через него, т. е. вставить
туда текст, объявить ему нужный charset и затем снова забрать в буфер
методом RichEdit.CopyTociipboard - он сам за вас все сделает. К
сожалению, это нам не подходит, т. к. у нас нет формы. Наиболее
капитальный метод- разместить в буфере, кроме простого текстового
формата, еще и тот же текст в формате RTF- приложение само выберет то,
что нужно. Оба этих способа приведены в самой большой, наверное, из
существующих, подборке FAQ гю Delphi на русском языке [24].
Но совсем зря, что ли, в Windows используется Unicode? Оказывается нет,
но размещать в буфере обмена текст только в Unicode следует исключительно
для семейства NT - в 9х либо не получите ничего вообще, либо получите
полную чушь вплоть до обрушения системы. Поэтому надо либо опять же
Предыдущая << 1 .. 75 76 77 78 79 80 < 81 > 82 83 84 85 86 87 .. 218 >> Следующая