D2009试用了一下,发现很大问题,和旧版本不兼容,最大问题是Char类型,String类型和旧版本不兼容,这不是导致了现有的Delphi粉丝都用不上了。估计又会因此而丢失一批粉丝。
解决方案 »
- 请大家帮我分析一下这个错误
- 如何取得拨号软件的提示代码?
- 有什么办法判断一个字符串是否全是数字?
- 高手帮忙,头疼死了,我用Webbrowse开发的一个程序,为什么会自动退出???
- 公司老板要我找一家软件公司开发生产线上的流程管理软件,很简单,我想在CSDN上混了的人都能够做的......
- tcxgrid如何给只读单元格设置不同显示颜色
- 关于QuickRep的主从报表问题,比较怪,但我想不会很难,只是我不知道怎么处理!
- D6里为什么LABEL里的中文总是少半个?
- 问一个非常弱智的问题: 怎么在ListView中加入一行
- 大家分数都长了吧,调查一下,都长了多少?我长了470.
- 一个相当奇怪的问题(关于xml和opendialog)
- ■■ 一个困扰了我好久的问题?
我最喜欢String了
最担心的是,我发现了一些很低级的BUG。
我的项目移植到Delphi2009只花了10几分钟的时间.呵呵.
这两天想把delphi2007下的一个基于UDP的聊天程序,移值到delphi2009下,弄了两天了没成功!
没成功的原因竟是TIDUDPserver的OnUDPread事件里一个参数类型的改变:
procedure TFMain.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle);大家仔细看,AData: TBytes这个参数在delphi2007是AData: TStream型的,这么小的地方难道非该不可吗?!!想不通,即使改了,起码应该兼容前面版本的参数一段时间啊。气死了,导致原来提取收到的数据的命令AData.ReadBuffer(Comm,AData.Size);出现3个编译错误提示。到现在也没找出解决和变通方法,一直提取不出来AData代表的接收信息了(AData里接收的是一个record记录结构型的字节流)。再搞,也不想用delphi了!!!太麻烦,升级一次几乎要重新学习一次知识,学习成本、升级成本太高!
是不可避免的。隨著版本不斷升級,功能不斷增加,兼容舊程序的包袱會越來越大,發展速度就越來越慢。很多控件,在同一pas文件中,用很多編譯開關,兼容 D3-D12 的做法,只能越來越難維護。
希望提供工具專門生成去除這些編譯開關後的干淨版本。2009 是一個重大改變,兼容90%舊代碼即是兼容性不錯了。不要指望99%以上的兼容。
雖然不能兼容,但如果升級的同時,能給出一個代碼不兼容列表及替代方案,那就理想了。
别告诉我你连TStream是什么都不清楚。
我前一阵子写游戏修改器,在读写内存的地方使用PANSICHAR,文字显示的地方使用WIDESTRING,这些根硬逻辑打交道的地方,本身就应该考虑用硬指令的。当windows从16位转换到32位,有多少人提出质疑,考发工具从16位转移到32位时候呢?当 INTEGER从16位长度变为32位长度,你读写文件是不是郁闷了?当然,如果你读写文件采用了BYTE、WORD这种硬指令,你就不需要为升级感到郁闷了。
这次也是因为 unicode 把 string 变为双字节的, 以前用的 string, Pchar() 转换也都能用, 大部分代码做小小改动基本上都是可以兼容的delphi 这次更新也是非常重要的, fans 因该都期待了很久才对, 怎么会跑了, 郁闷
这不是DELPHI升级的问题,而是INDY升级的问题,你可以换回去啊
如果你连这个问题都解决不了,那劝你别学写程序了,自己不会把TBytes写到TMemoryStream里面再用啊,这么小一个问题2天都解决不了,唉,啥也不说了
只是多了ANSI和Unicode的隐含转换而已
结果一样,改动非常大。太多的兼容性就会失去更多的先进性的。