sta*_*005 3 migration delphi unicode
我正在尝试将我自己的项目迁移到delphi 2010.但它似乎非常困难.
太多令人头疼的问题......有人可以分享将现有项目从一个非常老的delphi迁移到delphi 2010的经验吗?
War*_* P 13
我已将我的所有项目迁移到Delphi 2009/2010,并发现其中包括以下好处:
A.彻底重新阅读我的代码带来了我需要清理它的许多方法(因为它是大量的事故和增量代码污染,就像大多数RAD/delphi项目最终一样),其中很少是纯粹的unicode或与港口有关,但所有这些都使产品更好地被迫通过变更.
B.一个更清洁的世界,第三方组件更少.删除TNT以及十几个或第二个第三方组件将使您的项目更小,更正交,更容易支持.
C.移植没有理由让它成为一种方式.我的项目端口实际上都没有永久地"移动"到Delphi 2009/2010中.他们都建立在两个世界都很好.我在我需要它的所有代码中广泛使用UnicodeString类型,并且在Delphi 2007或更早版本上编译时,我为WideString创建了一个typedef.
D. delphi 2010 ide在Windows Vista和Windows 7上运行良好,语言是一种乐趣.Delphi 2009和2010并没有崩溃,Delphi 2007和Delphi 7经常为我做.
如果您不需要支持Vista和Win7,并且您100%快乐且无故障运行TNT组件,并且您的应用程序不会让您赚钱,那么请将它留在原地.如果它能让你赚钱,那就投入你的时间,你很快就会看到奖励.Delphi 2010和2009很容易成为有史以来最好的delphi版本,唯一令人头痛的问题是,自从文档移出WinHelp格式帮助文件以来,文档仍然低于Delphi 7的质量.
如果您正在使用Tnt并且您已经在代码页之间进行转换,那么是的,切换到Delphi 2010会导致您额外的工作,因为您需要删除 Delphi现在处理的内容的代码.最终,您的代码将更简单,但在此期间将它放在那里将是一件麻烦事.
SizeOf,Length和FillChar是非常基本的概念,作为专业软件开发人员,您应该了解自己.要知道你是在处理字符数据还是非字符数据,并且在处理后者时,不要使用与字符相关的类型.你有TBytes; 用它.不要将字符串用作字节缓冲区.当你想知道你有多少字节时,使用SizeOf; 当你想知道你有多少"东西"时,请使用长度.一般避免FillChar; 你可能不需要它,就像你今天使用它一样多.由于事物被填充的"char"无论如何几乎总是零,你可以考虑使用ZeroMemory.它具有较少的参数,并且与FillChar一样快,特别是因为Delphi支持函数内联.
编译器在从AnsiString转换为UnicodeString时会发出警告,因为它不是简单的字符串赋值,而是转换,保证分配更多内存并一次复制一个字符.这是一个性能警告,而不是数据丢失警告.相反方向的转换都是(即使分配给Utf8String,技术上永远不会丢失来自UnicodeString的数据,如果它只填充有效的Unicode字符).避免警告的最佳方法是首先不要使用AnsiString.使用普通的旧字符串,除了真正需要知道要编码的代码页的代码.
我不认为"重新测试"的论点非常强烈.库代码尤其应该具有您每次重新编译时都运行的单元测试.重新测试是你每天做几次的事情; 除非出现问题,否则不会有特别的努力.
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |