среда, 31 декабря 2008 г.

Размышления о бесперспективности рынка

При написании одного комментария в Дальневосточнй IT блог обратился к своим старым постам, касающихся Delphi for PHP, и обнаружил там один интересный комментарий от анонимного пользователя. Который утверждает, что российский рынок бесперспективен для западных разработчиков, почему в них и нет поддержки русского языка, аргументируя, что у нас привыкли воровать софт. Ну, на самом деле это не аргумент, по себе других не судят.

Если взять лидера рынка ПО – компанию Microsoft – то получается же все наоборот. Не так давно компания завершила перевод всей документации содержащейся в MSDN на русский язык, вышли их программы и инструменты на русском языке – Visual Studio, SQL Server и многие другие. Зачем это все, если наш рынок так плох?

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

Прихожу к выводу, что не все так однозначно с нашим рынком :) и автор комментария, по меньшей мере, заблуждается. Ведь в последнее время в нашей стране ситуация с пиратским ПО постепенно улучшается, что не может меня не радовать как разработчика. Немалую роль в улучшении ситуации, на мой взгляд, играют и принимаемые законодательные меры и усилия разработчиков ПО. К примеру, Лаборатория Касперского. В свое время благодаря пиратству их антивирус приобрел довольно большую популярность, а потом – «ваш ключ занесен в черный список» и хоть ты тресни, но не найти рабочего ключа в сети. И стали покупать. А куда деться то? Ведь вирусы никуда не делись. А остальные решения – какие то не серьезные. Особенно NOD32 – сколько раз уже приходилось восстанавливать систему «защищенную» им, но пораженную древним вирусом lovesun.

На этом завершаю свои предновогодние философствования, а то так можно тоже скатиться к «религиозной войне» которая разгорелась на Дальневосточном блоге по поводу PHP.

понедельник, 29 декабря 2008 г.

Использование собственных курсоров в Delphi

На днях мне задали довольно тривиальный вопрос: "Как сделать собственные курсоры в Delphi?". Что, думаю, в сети разве нет информации по этому поводу? Методом "гугления" обнаружил статью на DelphiSources - была первая в списке. Но это не совсем то, просмотрев еще несклько ресурсов, бросил это дело. И хотя вся процедура создания и подключения курсоров, да и других ресурсов довольно проста, но она не прозрачна и содержит много подводных камней, и может вызвать затруднения у начинающего программиста.

Итак, что мы имеем? Тривиальная задача из студенчества: создание примитивнейшего графического редактора. Необходимо подключить к программе и использовать курсоры для карандаша и резинки.

Собственно курсоры создаются в программе ImageEditor входящей в поставку Delphi 7 (именно для этой версии прозвучал порос). Процесс рисования курсора опустим - там все достаточно просто. Первые проблемы могут возникнуть при попытке подключения курсоров к программе.

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

Для создания ресурсов нам понадобится утилита brcc32.exe (Borland Resource Compiler) - которая распологается в каталоге с Delphi. Я рекомендую создать отдельный подкаталог "resources" в каталоге с проектом и разместить там все необходимые файлы для создания файла с собственными ресурсами. Туда же скопировать и эту утилиту.


Теперь необходимо подготовить файлик для компиляции ресурсов. Неоходимо открыть блокнот и описать каждый курсор в следующем формате:

ИМЯ_РЕСУРСА ТИП_РЕСУРСА ПУТЬ_К_РЕСУРСУ

Для исключения возможных неточностей следует имя ресурса сразу же писать заглавными латинскими буквами. Чтобы мои ресурсы можно было легко увидеть в одном месте я именую их все с заглавной буквы Z - так проще. Реальный файл с описаниями ресурсов одного из моих проектов представлен ниже:

В нашем случае необходимо написать следующее:

ZCURSOR_PEN CURSOR pen.cur
ZCURSOR_ERR CURSOR err.cur

и сохранить в файле cursors.rc. Теперь остается только выполнить из командной строки команду brcc32 cursors.rc в результате чего создастся файл с ресурсами cursors.res, содержащий в себе наши курсоры.

Теперь остается только подключить этот файл к проекту, делается это следующей директивой {$R cursors.res}. В моем проекте это сделано следующим образом:

Затем объявляется числовая константа на каждый курсор, например:

crPen = 100;
crErraser = 101;

и далее при инициализации формы следует подгрузить эти ресурсы:

Screen.Cursors[crPen] := LoadCursor(HInstance, 'ZCURSOR_PEN');
Screen.Cursors[crErraser] := LoadCursor(HInstance, 'ZCURSOR_ERR CURSOR');

Ну и теперь, наконец-то, можно с ними работать как с обычными курсорами. Кстати, тут можно посмотреть описание функций для работы с курсорами.

Вот собственно и все, довольно объемный пост получился, даже сам не ожидал :)

воскресенье, 28 декабря 2008 г.

И снова Delphi 2009

Ура! Наконец то мне удалось запустить Delphi 2009 и избавиться от проблем о которых я писал ранее. Решил проблему кардинально - поставил Microsoft Virtual PC (кстати, был очень удивлен - не знал что она теперь полностью бесплатна) - поднял на ней Windows XP и на чистую систему Delphi 2009 установилась без проблем. А вот в чем была истинная причина тех непонятных сбоев мне выяснить так и не удалось, но и ладно, и в виртуальной машине можно работать, только вот колесо прокрутки что то глючит иногда :)

Но на этом проблемы с ней не закончились. Мой проект, над которым я работаю последние несколько лет - отказался компилироваться. Те ошибки которые касались моего кода удалось довольно быстро локализовать и исправить (они касались несовместимости типов), а вот основная проблема случилась с компонентами FIBPlus. На настоящий момент на сайте разработчиков нет версии компонентов под эту версию Delphi, что очень жаль - непростительно тормозят разработчики! На полумертвом форуме на официальном сайте как то обнаружил запись, что они должны были выйти еще в ноябре ... Что ж, видимо это дух времени - обещать релиз и не выполнять обещания ...