Блог Delphi-программиста.
Обзоры инструментов и экспертов для Delphi. Описание JCL, JVCL, cnWizards. Дженерики в Delphi. Дневник разработки Lazy Delphi Builder. Переводы.
Личное открытие: TBookmarks может не работать[1] в IBX-ах и FIB-ах, но работает в BDE.
Давно заметил, что после установки DelphiSpeedUp на Delphi 6 с кучей других экспертов, IDE начинает глючить и периодически вылетать. Терплю. Лучше глюки, чем тормоза.
Эксперты, вообще, штука небезопасная.
Toolbar 2000 - как наркотик. Начав им пользоваться, от него очень сложно отказаться.
IBX в Delphi 2009 страшно глючат при работе с юникодной базой Firebird.
Я выложил третью бету Lazy Delphi Builder-a. Она стала ещё удобнее в использовании. Все основные навороты, которые я хотел реализовать, я уже реализовал, нереализованными остались только идеи которые возможно сделают работу ещё более удобной.
Если по этой версии не будет сообщений об ошибках, то я её переименую в стабильный релиз.
История изменений: Lazy Delphi Builder 0.9.4.97(beta3):
1) На форме About изменён шрифт на Arial
2) Исправлена ошибка с прорисовкой CheckBox-ов в Exclude Masks
3) Дистрибутив LazyDelphiBuilder теперь содержит 2 версии программы:
LazyDelphiBuilder.exe - версия для консоли, которая умеет запускать сохранённые профили LazyDBP
LazyDelphiBuilderGUI.exe - версия с GUI, которая всё
4) На главную форму добавлена закладка, позволяющая просмотреть список зарегистрированных в IDE пакетов
5) В дереве найденных файлов добавлена возможность отменять удаление
6) Добавлена возможность добавлять папки для сканирования непосредственно в дерево найденных файлов
7) При компиляции, старые выходные папки не удаляются, а переименовываются в Bin.~, Bpl.~ и т.д. (можно отключить с помощью /BackupOutFolders-). А старые папки Bin.~ теперь удаляются в Корзину(отключаемо с помощью /UseRecycleBin-)
8) Подробная русская справка по адресу: http://www.lazyproject.info/support/docs-ru/
9) +что-то ещё, про что я сейчас не помню.
Я использую в своих проектах . При этом я не хочу добавлять путь до FastMM4.pas в Library Path, чтобы не мучиться при отладке. Для этого я создал фиктивный package FastMM.dpk(runonly), который включает в себя тольк Fastmm4.dpk и компилирую FastMM со всеми остальными package-ами. А проекты подключают к себе уже fastmm4.dcu. Но в Delphi 2009 эта схема перестала работать. При включении FastMM4.dcu в проект, Delphi начинает ругаться и обзывать меня обидным заморским прозвищем "[DCC Fatal Error] F2051 Unit FastMM4 was compiled with a different version of System.TObject.InstanceSize". Причём, ругается он только если я собираю проект с DebugBuild Configuration. С Release всё собирается нормально. К слову сказать, ошибка “Unit бла-бла was compiled with a different version of бла-бла-бла” – одна из моих самых нелюбимых ошибок.
Начал писать пост в совершенной растерянности, не представляя с какой стороны взяться за проблему. Пока писал, пришла в голову мысль проверить, какое именно из различий между Debug и Release создаёт эту проблему.
Выяснилось, что проблема возникает, когда проект использует $(BDS)\Lib\Debug\ вместо $(BDS)\Lib\
А LazyDelphiBuilder, с помощью которого я и пересобираю все проекты, самой первой папкой для поиска исходников файлов всегда указывает $(BDS)\Lib\
С другими package-ами эту проблему повторить не получилось.
Получается, что System.TObject.InstanceSize в $(BDS)\Lib\ и $(BDS)\Lib\Debug разные.
Версия Дельфи: CodeGear™ Delphi® 2009 Version 12.0.3170.16989
Версия FastMM: Fast Memory Manager 4.90
Думаю, то ли разработчику FastMM написать, то ли в Quality Central, то ли вообще не заморачиваться и вписать путь до Fastmm4.pas в Library Path. А может не лениться и выяснить, откуда берётся $(BDS)\Lib\ в LazyDelphiBuilder-е?.. ;)
А вы знаете, сколько стоит отдать на аутсорсинг сопровождение 20 офисных компьютеров, 5 серверов и двух рабочих мест 1C? А я знаю. Тем более что цену ИТ аутсорсинга можно легко рассчитать на калькуляторе цен прямо на сайте аутсорсера.
Мне сегодня песдетс какой-то, а не сон снился. Приснилось что две крупные армии должны были начать бои на территории Риги. Сами бои должны были вот-вот начаться. Точнее все верили что войны не будет. Но уже одна из воюющих сторон заняла свои позиции, и вот-вот должна была прибыть вторая. Интересно было наблюдать за жизнью города, который возможно, вот-вот будет разрушен. Особенно за клубами и тусовками. Несмотря на то что улицы заметно опустели, народ всё ещё шёл на тусовки, не собираясь менять свои планы из-за какой-то возможной войны, которая ещё фиг знает когда начнётся.
Но самое смешное - это воюющие стороны.
Одна армия воевала за Embarcadero, а вторая за Borland.
Читать дальше..
Сделал сайт с описанием и документацией по проекту(на русском и английском): http://sites.google.com/site/lazyproject/. Всё-таки на Google Code писать документацию очень неудобно. Wiki синтаксис накладывает массу ограничений.
Создал форум на UserVoce: http://lazydelphibuilder.uservoice.com/ Теперь, у Вас есть возможность предлагать новые фичи, и голосовать за старые. Также добавил себе в блог widget от UserVoice, где можно посмотреть результаты голосования. Довольно удобный сервис.
Сейчас активно занимаюсь созданием третьей беты:
Вчера сделал возможность отменять удаление файлов в дереве, т.е. Undo. Помучался изрядно. Респект и уважуха программистам, решившимся реализовать в программе возможность отменять изменения(Undo). Код, который получился мне не очень нравится. Самое лучшее место для реализации Undo как мне кажется при работе с VirtualTreeView – это внутренности VirtualTreeView.
Сейчас активно занимаюсь созданием консольной версии.
Забавно, что никто не сообщил о заморозке проекта в случае возникновения ошибки во время компиляции.
[1] Идея которая стоит за этим уроком: при создании очередного билда, приложение должно быть полностью перекомпилировано вместе со всеми используемыми библиотеками.