ImageEn - это одна из мощнейших библиотек компонент для обработки, просмотра и анализа картинок в программах на Delphi и C++Builder без использования дополнительных DLL или OCX. Она позволяет загружать и сохранять картинки множества форматов, получать их с TWain-сканеров, производить захват видео, применять фильтры, объединять картинки, выделять области изображения (поддерживается инструмент "Волшебная палочка") и многое другое. В 2004 году читатели журнала "Delphi Informant Magazine" выбрали ImageEn продуктом года в категории "Imaging Tool".
В конце июля компания HiComponents планирует выпустить новую версию ImageEn (3.1.2), исходные тексты которой будут доступны бесплатно! Кроме того, осенью планируется выпустить новый бесплатный плагин для обнаружения объектов и лиц. Желающие уже могут взглянуть на новый дизайн сайта компании, который теперь будет иметь форум и систему регистрации ошибок и запросов о новых возможностях.
Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами
26 июня 2010
14 июня 2010
FastReport VCL 5: Объединение дублирующихся значений
Компания Fast Reports обещает осенью 2010 года выпустить FastReport VCL 5. Из всех нововведений пятой версии меня наиболее заинтересовало "объединение дублирующихся значений". Это связано с тем, что за несколько дней до того, как я узнал о возможностях 5-й версии FastReport VCL, я делал отчет, в котором, если ФИО повторялось в соседних строках, то эти строки первого столбца должны были объединяться в одну строку. Думаю, многие делали, что-либо подобное:
В текущей версии FastReport VCL это без скрипта сделать нельзя. У объекта "Текст" есть свойство " SuppressRepeated", но оно только позволяет скрывать повторяющиеся значения. При этом в FastReport.NET у объекта "Текст" есть свойство "Duplicates", которое может иметь одно из следующих значений:
• Показывать (Show) – показывать повторяющиеся значения;
• Прятать (Hide) – прятать объект с повторяющимся значением;
• Очищать (Clear) – очищать текст в объекте, но показывать сам объект;
• Объединять (Merge) – объединять объекты с одинаковыми значениями.
Эта вопиющая несправедливость будет исправлена в FastReport VCL 5! В пятой версии, по аналогии с .NET, будет несколько режимов SuppressRepeated.
В текущей версии FastReport VCL это без скрипта сделать нельзя. У объекта "Текст" есть свойство " SuppressRepeated", но оно только позволяет скрывать повторяющиеся значения. При этом в FastReport.NET у объекта "Текст" есть свойство "Duplicates", которое может иметь одно из следующих значений:
• Показывать (Show) – показывать повторяющиеся значения;
• Прятать (Hide) – прятать объект с повторяющимся значением;
• Очищать (Clear) – очищать текст в объекте, но показывать сам объект;
• Объединять (Merge) – объединять объекты с одинаковыми значениями.
Эта вопиющая несправедливость будет исправлена в FastReport VCL 5! В пятой версии, по аналогии с .NET, будет несколько режимов SuppressRepeated.
09 июня 2010
Проверяйте интервалы
Недавно, когда я платил за электричество через инфокиоск Беларусбанка, я ошибочно ввел текущие показания счетчика на 100 единиц меньше, чем было оплачено в прошлый раз.
Результат поразительный – я чуть не оказался должен оплатить 5 760$ за 99 900 киловатт!
Спрашивается: где "защита от дурака"? Господа программисты, помните, что надпись "ПРОВЕРЯЙТЕ ПРАВИЛЬНОСТЬ ИНФОРМАЦИИ" ни к чему не обязывает пользователя, даже если вы её напишите большими жирными буквами! Лишняя, на первый взгляд, простенькая проверка введенной информации окажется совсем не лишней и спасет вас от подобного казуса.
Результат поразительный – я чуть не оказался должен оплатить 5 760$ за 99 900 киловатт!
Спрашивается: где "защита от дурака"? Господа программисты, помните, что надпись "ПРОВЕРЯЙТЕ ПРАВИЛЬНОСТЬ ИНФОРМАЦИИ" ни к чему не обязывает пользователя, даже если вы её напишите большими жирными буквами! Лишняя, на первый взгляд, простенькая проверка введенной информации окажется совсем не лишней и спасет вас от подобного казуса.
11 мая 2010
Обновился RAD Studio, Delphi/C++Builder и Delphi Prism Roadmap
Компания Embarcadero обновила свой RAD Studio, Delphi/C++Builder и Delphi Prism Roadmap. Основные направления работ R&D Team в проектах по развитию Delphi/С++Builder теперь такие:
Пока Embarcadero играет в кросс-платформенность, Microsoft во всю уже клепает 64-битные приложения. 64 bit Compiler Preview планируется к выпуску только в первой половине 2011 года. А значит Commodore выйдет еще позже, т.е. ближе к концу 2011 (или в первой половине 2012 года). Успеет ли Embarcadero выпустить свою IDE с полноценным 64-битным компилятором, пока еще есть программисты использующие Delphi?
RAD Studio, Delphi/C++Builder и Delphi Prism Roadmap
- Fulcrum – разработка кросс-платформенной VCL и компилятора для MacOS;
- Wheelhouse – добавление поддержки Linux;
- 64 bit Compiler Preview – консольная версия 64-битного компилятора;
- Commodore – полноценная версия кросс-платформенного 64-битного компилятора, улучшенная поддержка разработки много-ядерных и много-поточных приложений, интеграция с социальными сетями;
- Chromium – ускорение и упрощение процесса разработки за счет улучшения VCL и IDE, поддержка голосового ввода данных, поддержка процессора ARM.
Пока Embarcadero играет в кросс-платформенность, Microsoft во всю уже клепает 64-битные приложения. 64 bit Compiler Preview планируется к выпуску только в первой половине 2011 года. А значит Commodore выйдет еще позже, т.е. ближе к концу 2011 (или в первой половине 2012 года). Успеет ли Embarcadero выпустить свою IDE с полноценным 64-битным компилятором, пока еще есть программисты использующие Delphi?
RAD Studio, Delphi/C++Builder и Delphi Prism Roadmap
05 мая 2010
Вред преждевременной оптимизации
Некто из великих сказал "Преждевременная оптимизация - корень всех зол" ("Premature optimization is the root of all evil"). Точно автор этих мудрых слов не известен, но возможно это был Дональд Кнут или Энтони Хоар или Эдсгер Дейкстра. Подробнее о исследованиях на эту тему можно посмотреть тут или тут.
30 апреля 2010
Шутки округления
Для IP-телефонии я пользуюсь JustVoip (один из сервисов Betamax). Этот сервис отличается низкими ценами (в 2-3 раза ниже, чем у Skype) и наличием бесплатных звонков во многие страны на стационарный телефон.
Так вот, как-то надо было мне позвонить другу в Германию. Запускаю JustVoip и звоню ему на домашний телефон – не снимает. Набираю ему на мобильный, а программа мне пишет: "Стоимость минуты 0.08€, у вас не хватает средств". Смотрю, точно на счету – 0.07€. Захожу на сайт сервиса, чтобы пополнить счет, а на сайте написано: "На счету 0.08€". А ведь это ровно стоимость минуты!
Вот наглядный пример, когда округление суммы на счете до центов реализовано разными алгоритмами. Система одна, счет один, а клиентские программы разные и в результате различный баланс :(
Итак, авторы программ задумайтесь над тем, чтобы алгоритмы обработки данных в рамках одной системы были одинаковыми!
Так вот, как-то надо было мне позвонить другу в Германию. Запускаю JustVoip и звоню ему на домашний телефон – не снимает. Набираю ему на мобильный, а программа мне пишет: "Стоимость минуты 0.08€, у вас не хватает средств". Смотрю, точно на счету – 0.07€. Захожу на сайт сервиса, чтобы пополнить счет, а на сайте написано: "На счету 0.08€". А ведь это ровно стоимость минуты!
Вот наглядный пример, когда округление суммы на счете до центов реализовано разными алгоритмами. Система одна, счет один, а клиентские программы разные и в результате различный баланс :(
Итак, авторы программ задумайтесь над тем, чтобы алгоритмы обработки данных в рамках одной системы были одинаковыми!
27 апреля 2010
Delphi 2010: Ловим ошибки отсроченной загрузки DLL
Как я писал раньше, Delphi 2010 научилась вызывать функций из DLL новым способом – с помощью отсроченной загрузки DLL.
Одним из недостатков этого способа является то, что если при вызове функции произойдет ошибка, то пользователь не узнает ее причину. В случае если DLL не существует, так же как и если в DLL нет нужной функции, то сообщение в программе будет однотипным:
Одним из недостатков этого способа является то, что если при вызове функции произойдет ошибка, то пользователь не узнает ее причину. В случае если DLL не существует, так же как и если в DLL нет нужной функции, то сообщение в программе будет однотипным:
Подписаться на:
Сообщения (Atom)


