今天化了一个小时写了一个小程序,我的delphi php的第一个程序。功能是在浏览器上显示一道简单的加法题,用户可以输入答案,电脑会告诉你正确或者错误,然后可以再来一题。功能很简单,主要为了熟悉 delphi for php,写的时候,不时地查阅php帮助,发现这次codegear的php帮助做的还是不错的。
程序如下:
//Includes
require_once(”vcl/vcl.inc.php”);
use_unit(”forms.inc.php”);
use_unit(”extctrls.inc.php”);
use_unit(”stdctrls.inc.php”);
//Class definition
class Unit3 extends Page
{
public $txtAnswer = null;
public $btnB = null;
public $btnA = null;
public $btnRun = null;
public $lblMsg = null;
public $Button4 = null;
public $Button2 = null;
function btnRunClick($sender, $params)
{
$a=rand(1,9);
$b=rand(1,9);
$this->btnA->Caption=$a;
$this->btnB->Caption=$b;
$this->lblMsg->Caption=” “;
$this->txtAnswer->Text=” “;
}
function txtAnswerSubmit($sender, $params)
{
global $a;
global $b;
global $c0;
global $c1;
$a=$this->btnA->Caption;
$b=$this->btnB->Caption;
$c0=$a+$b;
$c1=$this->txtAnswer->Text;
if ($c0==$c1){$this->lblMsg->Caption=”Right”;
} else {$this->lblMsg->Caption=”Wrong”;
}
}
}
global $application;
global $Unit3;
//Creates the form
$Unit3=new Unit3($application);
//Read from resource file
$Unit3->loadResource(__FILE__);
//Shows the form
$Unit3->show();
?>
第一次写php有以下感受:
1 delphi4php的IDE很强,速度还是比较快的,并且有了vcl4php这样的强大武器以后,其他诸如zend的IDE可以彻底忘记了。delphi的IDE的流畅感觉只有vs可以相比。
2 $this->lblMsg 这样的对象写法,上来总是不适应,因为没有怎么好好看php5的书,后来看了几个例子,基本上明白了。其实和delphi原来的面向对象的体系几乎是一样 的,只是语法不同而已,因为代码提示的速度很快,所以如果没有出来代码提示,就可以认为是写错了。
3 写$this很罗嗦,不知道有没有办法可以简化。
4 因为是面向对象的,所以只需要考虑其中的事件处理,上面的代码中只有两个内部的function的代码是写的,别的都是delphi自动生成。
5 以上程序有一个小错误,就是当Again按钮点击后,在请空text的值得时候,会发送一个submit,导致label显示wrong的信息。我想可以用一个表示状态的变量来进行全局控制。
6 每一句都要用; 结束,特别是在if中的语句,这点和pascal有些不同。
7 强大的IDE可以判断{}的层次,不至于出错。
8 感觉这样的例子写法几乎和windows原生程序没有什么差别。并且比起intraweb也简单很多。php到底很强啊,delphi则更强。
9 用向导生成的php代码送到dh和surpass上都不能正常运行。dh的出错信息好像是不支持inc.php这样的后缀,因为我不能修改dh上安装的 php设置文件,只好有机会自己搭建一台apache的服务起来测试了。delphi4php自己在调试的时候用的就是apache,我想应该是设置上的 问题。
10 据说delphi4php对于中文支持不好,还没有测试。
11 检查语法正确功能没有快捷键不太方便。
慢慢继续研究。