当前位置 : 主页 > 编程语言 > delphi >

delphi – 对D2010的更新真的很有意义

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在尝试将自己的项目迁移到delphi 2010.但它似乎非常困难. 我将TntControls用于旧项目.如果我删除这个库,我必须重新实现一些运行时函数.例如:将UnicodeString转换为指定的代码页. “Si
我正在尝试将自己的项目迁移到delphi 2010.但它似乎非常困难.

>我将TntControls用于旧项目.如果我删除这个库,我必须重新实现一些运行时函数.例如:将UnicodeString转换为指定的代码页.
>“SizeOf”,“Length”,FillChar()仍然让我困惑.如果SizeOf()应替换为Length(),编译器将发出警告.但是我还没有找到任何安全的教程.
>尝试将AnsiString强制转换为UnicodeString时出现令人困惑的警告.这次谈话不会导致数据丢失,不是吗?
>必须重新测试许多代码(zip,string utils等).

太多令人头疼的问题……有人可以分享将现有项目从一个非常老的delphi迁移到delphi 2010的经验吗?

>如果您正在使用Tnt并且您已经在代码页之间进行转换,那么是的,切换到Delphi 2010会导致额外的工作,因为您需要删除Delphi现在处理的内容的代码.最终,您的代码将更简单,但在此期间将它放在那里将是一件麻烦事. > SizeOf,Length和FillChar是非常基本的概念,作为专业软件开发人员,您应该了解自己.要知道你是在处理字符数据还是非字符数据,并且在处理后者时,不要使用与字符相关的类型.你有TBytes;用它.不要将字符串用作字节缓冲区.当你想知道你有多少字节时,使用SizeOf;当你想知道你有多少“东西”时,请使用长度.一般避免FillChar;你可能不需要它,就像你今天使用它一样多.由于事物被填充的“char”无论如何几乎总是零,你可以考虑使用ZeroMemory.它具有较少的参数,并且与FillChar一样快,特别是因为Delphi支持函数内联. >编译器在从AnsiString转换为UnicodeString时会发出警告,因为它不是简单的字符串赋值,而是转换,保证分配更多内存并一次复制一个字符.这是一个性能警告,而不是数据丢失警告.相反方向的转换都是(即使分配给Utf8String,技术上永远不会丢失来自UnicodeString的数据,如果它只填充有效的Unicode字符).避免警告的最佳方法是首先不要使用AnsiString.使用普通的旧字符串,除了真正需要知道要编码的代码页的代码. >我认为“重新测试”的论点非常强烈.库代码尤其应该具有您每次重新编译时都运行的单元测试.重新测试是你每天做几次的事情;除非出现问题,否则不会有特别的努力.
网友评论