为了维护xampps这项目, delphi还必须得会那么一点. 总不能碰到问题就问人吧, 感觉太不长进了. 经过几天的努力编写与学习, 以站在php角度来思考delphi, 感觉php强大的确是真理. 但delphi的理念是不错的, 可以从中看得出来, C#都在copy它.
1: 变量
完全跟php是两码事, 每个变量都要先声明变量类型, string, Integer, Boolean..... 基本上跟php类似, 不过delphi多了许多特殊的类型. 如 TextFile, TStringList, 这就比较难理解了. 半天没有转过思维来.
2: 数组.
php强大之处在于数组, 比如$arr['aa']='bb'; 这种数组在delphi里面怎么弄呢? 网上资料真的很少呀, 有人说用个控件, 有人说用hash表. 最后终于明白用. TStringList, 代码也有意思, 瞧瞧
portslist := TStringList.Create; portslist.Add('aa=bb'); portslist.Values['aa'] // 这就能够取到bb的值了.
这样来玩数组, 我都惊呆了.
3: print_r()
数组的值越来越多, 可怎么全局查看一下呢? php的打印函数多牛X, 在delphi这儿基本上就废了, 至今我还没找到好方法.
4: uses
这就相当于引用, 可这引用有点奇怪, 它支持 a, b两文件相互uses, 你似想一下, a.php include a.php, b.php再include a.php, 会是什么效果? 可delphi就能够支持. 还有一点特别的是, 每个pas文件头部都有引入写法, 原来, delphi不支持公共引入. a.pas 引入b.pas后, a.pas并不知道b.pas文件引入了哪些文件, 它也无法使用.. 这没有php那么智能.
5: procedure, function.
听说两者的区别就在于有没有返回值. 但我觉得, procedure更多的是对象的方法. function则跟php类似, 单一的工作.
6: if 判断.
delphi 在if中只支持布尔值, 你不能像php一样, if 'string' , 而要换成布尔值. 有一堆的toxxx类的方法可以调用. 或者你可以用 Length()函数来判断是不是大于0. 感觉很笨滴说..
7: 全局变量, 常量.
变量在头部声明即全局性, 这跟js类似. 其它的在方法, 函数中, 则是局域性变量. 常量只能设置明文, 不能像php一样, 可以调用函数之类的. 函数中声明常量似乎也是局域性. 这让人有点头痛. 假如某个值是计算出来的, 怎么设置常量?
8: delphi xe5编辑器.
工欲行利于器, 是delphi最缺少的, 编辑器烂得很, 提示抽风, 文档也不内置, 没有折合, 光标定位混乱, 回车,tab键都跟我们平时使用的工具有所差异. 全英文版的xe5, 我已经无心吐槽了. 或许这就是影响delphi发展的原因吧, 一代语言没落是有因可追的, 你没见js没落, 也没见sqlserver没落, 那是因为微软一直在帮助开发者.
9: C#
请不要叫我delphi程序员, 因为我玩delphi, 目的是学习C#.
End;