arrays – Delphi – Byte数组到字符串
发布时间:2020-12-15 09:33:58 所属栏目:大数据 来源:网络整理
导读:在我的Delphi VCL表单应用程序中,我有一个具有TBuff参数的程序(在字节数组之前定义).在此过程中,我必须将参数转换为字符串. procedure Form1.Convert(Collect: TBuff);var str: String;begin str := SysUtils.StringOf(Collect);end; 编译之后,我被警告存在
在我的Delphi VCL表单应用程序中,我有一个具有TBuff参数的程序(在字节数组之前定义).在此过程中,我必须将参数转换为字符串.
procedure Form1.Convert(Collect: TBuff); var str: String; begin str := SysUtils.StringOf(Collect); end; 编译之后,我被警告存在这个编译器错误:
解决方法
您遇到的问题是您已经定义了自己的字节数组类型,如下所示:
type TBuff = array of Byte; 您的这种私有类型与其他字节数组类型不兼容.大多数使用字节数组的RTL函数使用RTL类型TBytes,它被声明为TArray< Byte>. 你要做的第一件事就是从你的程序中删除TBuff,而不是使用TBytes.如果继续使用TBuff,您会发现所有字节数组代码都存在于自己的贫民窟中,无法与使用TBytes的库功能进行交互.因此,逃离贫民区,并从存在中删除你的TBuff类型. 现在,为了将字节数组转换为字符串,您需要提供编码信息来执行此操作.您选择了StringOf,这些日子应该被视为遗留功能.最好在转换中更明确并使用TEncoding. 例如,如果字节数组是UTF-8,则写入: str := TEncoding.UTF8.GetString(ByteArray); 如果字节数组是用本地ANSI编码编码的,那么你写: str := TEncoding.ANSI.GetString(ByteArray); 在您的情况下,使用StringOf表示字节数组是ANSI编码的,因此后一个示例是您所需要的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |