Показаны сообщения с ярлыком Delphi for PHP. Показать все сообщения
Показаны сообщения с ярлыком Delphi for PHP. Показать все сообщения

суббота, 24 мая 2008 г.

Я думал хуже не бывает – Delphi for PHP 2

Еще 6-го мая произошло событие, которого я так долго ждал – появилась для скачивания вторая версия Delphi for PHP. Сразу же «обрадовал» ее размер – она была в 2,5 раза больше чем предыдущая версия! Ну я и обрадовался – наверное все таки довели до ума систему и дописали все недостающее. Скачиваю. Ставлю.

Общий стиль среды приведен в соответствие со стилем других IDE от CodeGear:


Однако первое же разочарование ждало меня при попытке скомпилировать простой проект.

Warning: require_once(vcl/vcl.inc.php) [function.require-once]: failed to open stream: No such file or directory in C:\Delphi4php\unit5.php on line 2

Fatal error: require_once() [function.require]: Failed opening required 'vcl/vcl.inc.php' (include_path='.;C:\php5\pear') in C:\Delphi4php\unit5.php on line 2


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

И в этом весь умирающий (медленно, но верно) CodeGear (да и Borland тоже). Хвататься за какие-то непонятные проекты и ничего не доводить до конца. Взять то же Турбо. Я не спорю, хорошая была идея, прежде всего в плане цены и лицензии. Но на настоящий день данная линейка не актуальна, хотя бы потому, что она не работает под Windows Vista. Да и не успел я ее в свое время приобрести и что теперь?! Покупать в 5 раз дороже отстающий от времени Delphi 2007, сидеть ждать «у моря погоды» - а вдруг все-таки выпустят?!! Или мигрировать в сторону .NET, С#, WPF – короче в сторону Microsoft?! Вот он уж точно никуда не денется (с большой долей вероятности).

воскресенье, 4 мая 2008 г.

public $Timer1 = null

Вчера бродил по блогам коллег и наткнулся на один интересный пост. Заинтересовала сама идея создания динамически обновляемой надписи. Я не пользуюсь VB вообще и VB.NET в частности и считаю его игрушечным языком, может быть я ошибаюсь. Но не буду здесь обсуждать языки и спорить на эту тему.

Данный блог еще тем мне интересен, что я сам в настоящий момент изучаю ASP .NET, но, как я считаю, я нахожусь в более выгодном положении, я рассматриваю эту технологию со стороны 2х языков – это Delphi .NET и С#. Которые наиболее приспособлены для написания управляемого кода – как говорил не помню кто – «в .net все языки равны, но некоторые равнее».

Итак, задача реализовать динамически обновляемую строку. В качестве примера я выбрал отображение текущего времени. Приступим.

ASP .NET & C#

Все примитивно сводится к размещению на форме компонента Timer с вкладки AJAX Extensions и написания кода:

<scrip runat="server" Language="C#">
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString("hh:mm:ss");
}
</script>

ASP .NET & Delphi .NET

procedure TWebForm1.Timer1_Tick(sender: System.Object;
e: System.EventArgs);
begin
label1.Text := DateTime.Now.ToString('hh:mm:ss');
end;

Delphi for PHP

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

Остановлюсь здесь более подробно.

Также как и в других средах, кидаем на форму компоненты Timer и Label. Выделяем таймер и смотрим на Object Inspector. На вкладке Events никаких событий нет, однако есть еще одна вкладка – JavaScript:

 

Находим там знакомый обработчик OnTimer и пишем следующий код:

//Add your javascript code here
var Stamp = new Date();
var Hours;
var Mins;
var Secs;

Hours = Stamp.getHours();
Mins = Stamp.getMinutes();
Secs = Stamp.getSeconds();

if (Hours == null ) Secs = "00";
if (Mins == null ) Mins = "00";
if (Secs == null ) Secs = "00" ;
if (Mins < 10 ) Mins = "0" + Mins;
if (Secs < 10 ) Secs = "0" + Secs;

document.all.Label1.innerHTML = Hours + ":" +
Mins + ":" +
Secs;

Вот собственно и все, что необходимо для вывода динамической надписи.

четверг, 1 мая 2008 г.

Первые сторонние компоненты для Delphi for PHP

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

Но вернемся к сторонним компонентам. Некая компания JomiTech уже предлагает достаточно большой выбор как платных, так и бесплатных компонентов (естественно, что первых намного больше). На сайте приводится большое количество демок компонентов и что можно с ними сделать. Наиболее симпатична следующая демка. А наиболее содержательная – эта.

Кстати сказать не так давно на сайте CodeGear появилась статья о создании собственных компонентов для Delphi for PHP.

А вот реальных примеров использования этой IDE для создания веб-сервисов, так найти и не удалось.

вторник, 15 апреля 2008 г.

Выполнено, но с ошибками на странице – Delphi for PHP

В предыдущем посте я писал о том, что среда не поддерживает русские имена в пути. Но на этом проблемы с путями не заканчиваются. Вначале я решил проблему кардинально – создал папку в корне логического диска – «D:\Delphi4php\» - однако, такое решение не является оптимальным, подтверждением тому – следующая ситуация.

Разместив несколько сложных компонентов (например, RichEdit) и запустив программу на исполнение, вижу печальную картину: мой браузер говорит об ошибке JavaScript и страница не отображается, нажав на сообщение, вижу следующее:

Ко мне не сразу пришла идея о том, что опять во всем виноваты пути, но в конечном итоге я поменял их обратно и как ни странно – все заработало. Гораздо позже я нашел пост в котором рассматривается эта проблема, и действительно – во всем виноваты пути! Такая ошибка возникает, когда проект сохранен на другом диске, нежели установлена Delphi for PHP. И существует только один путь избавиться от этой ошибки – переместить проект на тот же диск. Там же утверждается, что это не ошибка среды, а ошибка браузеров (что очень странно).

Кстати сказать, что создаваемые в Delphi for PHP приложения не работают в обозревателе Opera :(

Delphi for PHP

Забавно, прошло уже больше года, а об этом продукте в сети очень мало информации, а та, которая есть – написана в первые месяцы существования этого продукта. Причем все статьи из разряда «Первые впечатления … » Описывается интерфейс, некое подобие «Hello, World!!!» и все. Обзор на этом деле заканчивается. (Хотя не отрицаю, что я плохо смотрел, кто хочет – может кинуть в меня ссылкой на нечто более интересное, чем такие обзоры).

В связи с чем, я решил разобраться с этой средой сам. Разбираться буду на простом, но реальном примере – «реестр баз и банков данных» небольшое WEB-приложение, позволяющее вести учет информационных ресурсов. Далее в планах создание WEB-интерфейса к одной серьезной динамической базе данных, но … это все потом, а пока разбираемся со средой :).

Небольшое отступление – пока собирался разбираться со средой – буквально вчера появилась вторая версия – Delphi for PHP 2.0. Релиз то произошел, однако на сайте ее еще не выложили – «coming soon».

Как пишет сайт Delphi PHP Blog, основные улучшения новой среды коснулись самой IDE, редактора кода и поддержки базы данных.

Пока она не будет доступна для скачивания на сайте CodeGear (http://www.codegear.com/products/delphi/php) все следующее относится к первой версии продукта.

Итак, начнем … Запускаем IDE – сразу же бросаются в глаза достаточно существенные тормоза (при 4х GB оперативной памяти), но ничего и не с такими работали


Первое досадное разочарование. При попытке создать нечто похожее на «Hello, World!!!» вывалилась ошибка:

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'C:/Users/Р'алера/Documents/Delphi for PHP Projects/unit3.php' (include_path='.;C:\Program Files\CodeGear\Delphi for PHP\1.0\;C:\Program Files\CodeGear\Delphi for PHP\1.0\vcl\PEAR') in Unknown on line 0

Ясненько … IDE не дружит с русскими символами в пути – плохо! Но решаемо.

Но эта проблема с русскими символами не единственная. Запустив таки проект, вижу на экране иероглифы. Зная о существовании проблем с русскими кодировками у web-сервера Apache – сразу лезу в конфиг – поправлять DefaultCharset. Но тут еще одно разочарование – конфиг web-сервера перезаписывается при каждой «компиляции» проекта, пришлось искать где это можно поправить средствами IDE, благо настроек не много.


Все, после небольших плясок с бубном первая страничка «скомпилировалась» и заработала как следует.