Перейти к собственно контенту

Архив

Рубрика: Delphi

Когда-то я пользовался программой Zx Color Spy, чтобы заимствовать цвета с других приложений. Но она всегда мне казалась слишком навороченной, жутко неудобной, не решала главной задачи — быстро и удобно выбрать цвет.

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

http://mikesoft.ws/samples/color-browser

В Windows Vista во многих MDI приложениях часто наблюдается баг (субъективно — в SP1/SP2 значительно реже) при максимизации дочернего окна — оно занимает не всю отведенную ему область. Справа остается небольшое пространство. Далее…

Последнее время я занимался спасением архива сайта http://nevzorov.org, принадлежавшего погибшему Виталию Невзорову. На этом сайте больше 300 000 файлов. И, как оказалось, Total Commander, мой любимый файл-менеджер, плохо справляется с проверкой контрольных сумм такого количества файлов (файл с контрольными суммами он сгенерировал нормально, он занял почти 40 мегабайт). Такое впечатление, что он просто почему-то зависает на этапе загрузки файла — до проверки контрольных сумм даже не доходит.

Поэтому пришлось написать свою программу, которой удалось проверить контрольные суммы всего этого архива. И решил выложить ее вместе с исходными кодами, в качестве примера и в память о Виталие Невзорове (Vit-е). Код MD5 был взят из его Delphi Russian Knowledge Base.

http://mikesoft.ws/samples/md5-crc-calculator/

Добавлен пример работы с модулем FileEnum. Небольшая полезная программа, которая удаляет папки резервных копий IDE Delphi («__history»).

http://mikesoft.ws/components/fileenum/

Все кто учил язык BASIC, наверно помнят оператор безусловного перехода GOTO. Почему BASIC? Не только он, конечно, просто в ранних реализациях BASIC (например, Microsoft QuickBasic, входивший в свое время в поставку MS-DOS) он применялся действительно часто. Ведь там не было ни классов, ни операторов обрыва циклов и выполнения вроде Break, Exit, Continue, а также исключений. В современных же языках с полноценными средствами структурного программирования, использование Goto считается крайне дурным тоном, так как затрудняет чтение и делает код непредсказуемым. Доводы против оператора goto четко выписаны в одноименной статье Эдсгера Дейкстры. Но я решил идти не по тропе теоретических изысканий, а показать на практике, что код БЕЗ GOTO может быть не только красивее и логичнее, но и в разы быстрее.

Далее…

С грустью только что узнал, что в imouse.pas CodeGear RAD Studio 2007 остались старые баги с неосвобождаемой памятью, что конечно не особо страшно, но неприятно и может здорово затруднить отладку при ReportMemoryLeaksOnShutdown := True. Поэтому решил выложить свой, давно уже исправленный на свой вкус, модуль imouse, который я назвал MousePan.

Скачать модифицированный вариант можно здесь:
http://mikesoft.ws/components/mousepan/

Наверняка перед многими когда-либо вставала задача: открыть ряд файлов одного типа, но расположенных в различных подкаталогах.

Далее…

Рано или поздно в любых, более или менее серьезных проектах встает необходимость в автоматической компиляции или компиляции в один шаг. Зачем? Самая элементарная причина: чтобы быстро скомпилировать проект, не открывая его в среде. Например, был разработан крупный проект, включающий не один десяток компонентов, модулей, библиотек. Среда во время разработки сильно обросла посторонними и собственными компонентами и становится трудно различить, какой компонент используется в данном проекте, а какой — нет. Переносимости у проекта в данном случае никакой. На другом компьютере с установленной средой Delphi его не получится скомпилировать: придется переносить и устанавливать все необходимые компоненты, причем вспоминать, какой из них нужен, а какой нет. Это крайне неудобно, а если еще принять во внимание, что данный процесс подвержен ошибкам, то становится совсем невесело.

Далее…

Многие из нас пользуются мультимедийными или расширенными клавиатурами, где кроме обычных 100 с чем-то клавиш есть клавиши, упрощающие доступ к часто используемым функциям. Например, навигацию в браузере (Home, Back, Forward, Refresh, Stop), проигрывание музыки и фильмов в плеере, вызов калькулятора, почтового клиента и т.д.

Эти дополнительные клавиши действительно часто упрощают вызов постоянно используемых действий. Как же сделать поддержку этих клавиш в Delphi, чтобы пользователю было удобнее пользоваться нашей программой? Далее…