Книга призвана помочь программистам разрабатывать полноценные, профессиональные Windows-приложения в Delphi. Показано, как предотвращать повторный запуск приложения, работать с нестандартными окнами, перехватывать нажатие клавиш, создавать резидентные программы в Windows, а также инсталляторы и деинсталляторы программ, осуществлять поиск в документах, работать с СОМ- и USB-портами, шифровать текст и многое другое. Рассмотрены примеры решения этих и многих других проблем, которые встают при создании программы, ориентированной на долговременное использование ираспространение. Приведены приемы работы с Windows API.
Тогда при щелчке мышью на . Если это файлы без расширений или с незарегистрированными расширениями, то прогрвмма пред. Во всем этом деле есть один нюанс. По мы поступим более грамот. В начале поиска, перед оператором . Можно попробовать их также отфильтровать, но всего все равно не предусмотришь, гак что надо будет оговорить это в Справке. Кстати, кроме всего прочего, правая кнопка мыши при щелчке иа . вы можете, например, скопировать файл в другое место через пункт Сохранить объект как или даже что. Но это не все. Что нам делать с сохраненными файлами. Поэтому нам придется немного потесниться, и установить справа внизу кнопочку Загрузить результаты . Создавать сейчас меню только для одного пункта мы не будем, а позже все равно его создадим для настроек и справки, и тогда перенесем функцию кнопки в него. Кроме этого, на форму придется установить компонент . Но вот работоспособность программы во всех версиях . Причем без больших хлопот я не могу даже проверить работоспособность всего этого, например, в . Остаегся только надеяться, что все будет . Оптимизация чтения через . Мы, кстати, уже умеем создавать отображения файлов в память — см. Но здесь все еще проще — никаких структур ведь не надо, требуется только перевести содержимое файла в строку. Нам нужно осуществить такую последовательность операций. Потом мы считаем значения по этому указателю в строку и в обратном порядке все уничтожим . Заметки на полях. Это потоковое чтение с использованием . Механизм отображения файлов в память . Формально говоря, с точки зрения системы в данном случав, когда мы файл читаем последовательно байт за байтом, лучшим способом было бы использование потокового чтения. Но наше ограничение читаемого файла размером . Отметим, что при отображении файла в память, естественно, его когда. Разница та, что теперь это делает за нас система — обращение с файлами через . В таких системах, как у меня, где оперативной памяти достаточно много . точно сказать никто не может. Замечу ь скобках, что удалять ненужные переменные при переделке программы следует всегда — это дает дополнительную гарантию, что о. отладка этой программы после переделки . В данном случае я шел на это сознательно . Заметки на полях. В самом деле, вроде бы эта штука устроена специально так. что одновременно представляет собой и строку и указатель на эту строку, почему бы не написать просто. Но если вы попробуете поработать всерьез, то скоро программа начнет рушиться в самые непредсказуемые моменты — и это относится не только к данному случаю, например, в предотвращении повторного запуска мы тоже используем не . Анализ показал, что в нашем случае ошибки обусловланы следующим обстоятельством. под нее будет зарезервирована память. Дело еще и а том. что здесь никто не гарантирует отсутствия нулевого символа внутри файла, и тогда мы просто потеряем всю оставшуюся его часть . на эту тему также главу . Резюме такое — с . Эту тему мы еща будем более подробно разбирать в главе . Теперь приступим к внесению изменений в остальной части программы п начнем с функции . Внесем в ее заголовок переменную . После того как мы удалим все, относящееся к чтению из файла, и заменим его на анализ строки . Теперь внесем аналогичные изменения в функцию . Если вы поэкспериментируете, то увидите, что время теперь очень зависит от количества свободной памяти, даже с моими . Но, конечно, таких умопомрачительных . м чтении с диска, мы уже не получим. Кстати, на фоне общего увеличения скорости поиска Кстати, удалим из строки отображения времени поиска разряды часов, сейчас вы увидите, что о. Максимальный размер файла для поиска . Строку с заданием запрещенных распшрений файлов. теперь будег очень заметно, как тормозит браузер при загрузке странички — особенно в конце, когда нужно перейти на метку. Ио тут я ничего поделать не мог. Заметки на полях. Представьте себе, как работают процедуры . на эту тему главу . Но вы спросите — а как же двпьше, там ведь мы используем . А вот повторение разбора строки поиска каждый раз при поиске по . Увеличение это, однако, будет настолько гомеопатическим . можете видеть меню с пунктами Настройки, Справка и Загрузить результаты. Справкой мы займемся в г. Сохранять ли строку поиска — вопрос дискуссионный, и мы его еще обсудим чуть ниже. Итак, добавим модуль . Перепишем уже существующий у нас обработчик . Но если читатель решит, что сохранять надо. Подобным образом поступают многие программы. Самым грамотным решением было бы даже ввести отдельную установку — сохранять строку. Теперь реализуем установки для . Я еще раньше, как вы видели на рис. Данный пункт я назвал . Поместим на форму, как и в главе . После того как мы расположим на этой панели нужные компоненты, она приобретет вид, показанный на рис. Тут для разнообразия мы использовали для ввода чисел упоминавшийся ранее компонент . В нем не только передается фокус ввода, но и курсор в . В результате, если мы откроем панель . Наконец, четвертая процедура — обработчик события нажатия на кнопку . Программа эта не такая . Кроме этого, в меню уже имеется и пункг Загрузить резулыаты . Кнопку мы удалим, для . Заменим в двух местах . мое обработчика нажатия иа кнопку . как я уже говорил, сделаем в главе . Ыа некоторые я обращал внимание по . Так что если вы зададите, скажем, поиск фразы . В плане интеллектуальных способностей программу можно соверщенствовать до бесконечности, главное только — не переборщить. шбтыА молотком, держится лучше, чем гвоАль. Точнее, доделать функциональную часть. Так как, несмотря на довольно навороченный код . Я решил посвятить доработке . , чтобы программой было удобно пользоваться, доделывать придется довольно много, и при этом все равно мы ее по большому счету не доделаем. Хотя некоторые приемы вы здесь встретите впервые, большинство операций вам уже знакомы по предыдущим главам — если бы мы вводили их здесь по ходу доработки, то эта глава растянулась бы па полкьшги и освоить ее было бы значителыю труднее.