Блог


Последние записи


Теги

Информация

TDelphi-блог

Фильтр по тегу: работа


Изменение курсора и автоматическое восстановление при выходе из метода

Не знаю как у вас, а у меня коде (vcl приложение) полным-полно таких конструкций: var tmpOldCursor: TCursor; begin tmpOldCursor := Screen.Cursor; try Screen.Cursor := crHourglass; // код который может работать относительно долго // например, выполнять запрос в БД finally Screen.Cursor := tmpOldCursor; end; end; И мне это надоело. По двум причинам: увеличение размера модулей - по 8 строк кода на каждый такой случай разбухание секции uses, ведь чтобы это работало нужно в каждый модуль работающий с курсором добавить uses Forms, Controls; Поэтому давайте уже воспользуемся механизмом подсчёта ссылок в интерфейсах, и реализуем маленький класс избавляющий нас написания лишнего кода. Так чтобы вышеприведённый пример можно было упростить до 1й...

[[ Полный текст записи доступен в TDelphi-блоге]] читать дальше...
добавлено: 21 сен 15 просмотры: 1424, комментарии: 0



Перевод большого приложения с Delphi 6 на Delphi 2010. Мой опыт.

Это серия публикаций посвящённых переводу большой Delphi программы с Delphi 6 на Delphi XE.

Дано
Большое приложение, с большой базой данных и большой историей. Приложение, которое начали разрабатывать ещё на Delphi 3, потом портировали на Delphi 6. Теперь надо ввести поддержку юникода, и собрать в Delphi 2010. Приложение использует кучу пакетов как самописных, так и от сторонних производителей. Проект большой, комментариев в коде практически нет. Юнит-тесты написаны только для очень маленькой части кода общих библиотек.

Что надо получить?
Работающую версию программы с поддержкой юникода для D2010. Из-за большого числа клиентов, крайне желательно, чтобы обновлению программы (включая базу данных) с неюникодной версии на юникодную происходило по возможности безболезненно. В идеале сделать так, чтобы с одной и той же базой данных можно было работать как из уникодной версии программы так и из Ansi-версии.

Необходимо поддерживать и развивать существующую версию (на Delphi 6), исправляя найденные баги и расширяя функционал. А баги будут на сто процентов.

Стратегии перехода на Юникод:
1) Сделать так, чтобы один и тот же код мог собираться как в Delphi 6, так и в Delphi 2010 и чтобы программа работала стабильно и без ошибок.
2) ...

Читать продолжение в TDelphi блоге:
1) Переход на юникод 1: Поиск стратегии.
2) Переход на юникод 2. План перехода и сторонние библиотеки.
3) Переход на юникод 3. Одновременная работа с Ehlib 3.6 и 5.2.
добавлено: 07 июн 11 просмотры: 2934, комментарии: 0



Текучка 14: Май 2011. Вести с полей.

Интересно, кто сейчас читает мой блог? Как вы оцениваете работу блога? Аналитика от гугла показывает, что в день в среднем происходит около 250 визитов. Но я так понимаю, что львиная доля большая часть этих визитёров – какие-то веб-сервисы. Поэтому хотелось бы составить примерное представление, о числе живых читателей. Оставьте комментарий пожалуйста.

Здесь же можно написать свои пожелания по блогу, если таковые есть. Давно я не предлагал пообщаться в комментах. Вот давайте и пообщаемся как-нибудь. Вот, например, скажите, используете ли вы ModelMaker Code eXplorer? А пробовали ли работать с Lazy Delphi Builder, и каковы впечатления?

О блоге. Сделал отдельную страничку со ссылками на все известные мне статьи о JCL и JVCL на русском.

Читать продолжение в TDelphi блоге.

Картинка с другого сайта.

Photo by ...-Wink-... on Flickr
добавлено: 27 май 11 просмотры: 1965, комментарии: 3



Итоги последнего курса в RTU, по программе Информационные технологии (весенний семестр).

Это продолжение публикации об учёбе в университете. Первую часть (первый семестр последнего курса) можно найти здесь.

Я конечно зря так долго оттягивал написание этого поста, ведь с момента окончания курса прошёл ровно год, и я успел подзабыть большую часть предметов.

Основы искусственного интеллекта

На втором курсе у меня тоже был предмет с похожим названием. Это был выборный предмет и там мы проходили экспертные системы. Курс "Основ ИИ" был куда серъёзнее.

Краткое содержание курса: история ИИ, пространства состояний, поиск в пространствах, эвристика, схемы отображения знаний и сценарии, логика (предикаты и все-все-все). К сожалению, логике было отведено не так много времени и у меня осталось ощущение скомканности от этой темы.

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

Читать запись полностью..
добавлено: 11 май 11 просмотры: 1578, комментарии: 0



Как мы делали chm справку для наших программ. Часть 2: Help Maker и процесс создания

Вчера я описывал виды справок, и критерии по которым мы подбирали программу для создания chm-хэлпа. Это были поддержка латышских и русских букв цена в пределах 100$. Рассмотрев несколько вариантов, мы в конце-концов мы остановились на бесплатной программе HelpMaker. История HelpMaker-a Изначально HelpMaker задумывался как проект с открытым исходным кодом, написанный на Delphi. Но из-за огромного числа ошибок, говнокода и отсутствия активности open-source сообщества, исходники были закрыты и проект был полностью переписан на Visual C. Тем не менее, продукт остался бесплатным. Развитием продукта занимается компания VizAcc, но последние версии программы не доступны для широкой публики. Последняя свободно доступная версия - это HelpMaker 7.4.4 и именно её мы и использовали. Скачать эту...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
читать дальше...
добавлено: 29 июн 10 просмотры: 1427, комментарии: 0



Как мы делали chm справку для наших программ. Часть 1: теория

Заметил у Влада в блоге пост посвящённый созданию chm-справки с помощью Html Help Workshop и решил рассказать о своём опыте. Тем более что, в начале этого года я попробовал кучу редакторов для создания справки к программам и нашёл подходящий далеко не сразу. Сначала я хотел написать мини-обзор программ для создания chm справки, но при написании поста вдруг понял, что даже забыл какие из программ я тестировал, поэтому просто опишу историю написания хэлпа. Одним весенним днём в наш программерский барак заглянуло начальство и сказало: "нужно сделать хэлп и интегрировать его в наши программы.". "Будет сделано!", дружно ответили программисты и устроили совещание. В ходе совещания были выявлены следующие типы справки: WinHelp (старая добрая справка с расширением .hlp) ...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
читать дальше...
добавлено: 28 июн 10 просмотры: 1197, комментарии: 0



Заметки о процессе ведения проектов в Delphi. Мой опыт.

Это старый пост из архива, который почему-то не был опубликован. Он немного устарел, и описывает то как я видел процесс разработки 1,5 года назад. Если интересно, то позже я напишу о том, как я вижу этот процесс сейчас. Как-то так получилось, что в основном, мне приходилось заниматься сопровождать и развивать чужие проекты. А характерным признаком всех моих мест работ было одно – бардак. На всех работах, одним проектом занимался только один программист. У проекта обычно есть руководитель, который формулирует задания. Руководитель кода не знает, и программировать не умеет. В проекте могут участвовать люди, занимающиеся поддержкой и развитием базы данных, тестированием продукта, общением с клиентами и установкой новых версий. Практически все проекты, с которыми я работал, относились к...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
читать дальше...
добавлено: 25 май 10 просмотры: 961, комментарии: 0



Текучка 12: Велосипед для езды по минному полю. Или почему не стоит вешать обработчики Application.O

Это история о том, как один программист, начал изобретать групповой делегат (multicast delegate) для обработки события Application.OnMessage, не зная о том, что подобный класс включён в стандартную поставку Delphi. Одному программисту понадобилось сделать так, чтобы одна из форм обрабатывала событие Application.OnMessage. Программист не раз встречал подобный код у себя в библиотеках. Обычно это делалось так: в секции юнита initialization, запоминался старый обработчик события затем вешался свой обработчик события, который после выполнения своих операций вызывал запомненный старый обработчик а восстанавливалась цепочка, как правило, в секции finalization Таких обработчиков могло быть несколько, но все они по цепочке вызывали предыдущий обработчик, и нормально работали...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
читать дальше...
добавлено: 22 май 10 просмотры: 1111, комментарии: 0



Текучка 11: Поиск AV в полевых условиях и найденная в результате цепочка ужасного кода.

Недавно был случай: у клиента при запуске программы возник загадочный Access Violation, а проблема оказалась в статически прилинкованной Dll-ке. Но начав исследовать эту проблему, выявился большой комок ужасного кода. Звонит коллега: я у клиента, поставил обновление, и последний билд не запускается на 3х компах из 10. При старте программы вылетает сообщение об ошибке по адресу 0x0000L0L0. А очень старый билд запускается без проблем. Подключись пожалуйста удалённо, говорит, и посмотри в чём может быть дело. Дело осложнялось тем, что даже при запуске проги в режиме отладки log оставался пустым. Значит ошибка происходила до запуска системы логирования, скорее всего в initialization секции какого-то юнита. Расставил во всех initialization секциях основных модулей показ диалогов с...

[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
читать дальше...
добавлено: 28 апр 10 просмотры: 902, комментарии: 0