加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Delphi 2010中停用巨大的字符串

发布时间:2020-12-15 04:17:19 所属栏目:大数据 来源:网络整理
导读:我是Delphi的新手,我正在将一个非常古老的Delphi项目迁移到Embarcadero RAD Studio 2010.我发现使用字符串时遇到了问题.这是代码: ProgramaResultadosType = record Version: string; TituloPrincipal : string; BloquesResultados : VectorBloquesResultad
我是Delphi的新手,我正在将一个非常古老的Delphi项目迁移到Embarcadero RAD Studio 2010.我发现使用字符串时遇到了问题.这是代码:
ProgramaResultadosType = record
    Version: string;
    TituloPrincipal   : string;
    BloquesResultados : VectorBloquesResultadosType;
end;

FileOfProgramaResultadosType  = file of ProgramaResultadosType;

错误……

“E2155 Type ‘%s’ needs finalization – not allowed in file type”

我知道当你没有指定字符串大小时,对于许多delphi开发人员来说这是一个众所周知的错误.

基本上我想停用像旧版RAD Studio一样的巨大字符串指令,但我在2010版本中找不到.

解决方法

只需使用:
ProgramaResultadosType = record
    Version: shortstring;
    TituloPrincipal   : shortstring;
    BloquesResultados : VectorBloquesResultadosType;
end;

但请注意:

>几乎每次对RTL函数的调用都会首先对新字符串类型进行不可见的转换:在读取shorttring内容之后,最好使用另一个显式字符串变量;
>在较新版本的Delphi中(从Delphi 2009开始),string是一个Unicode字符串:因此当从UnicodeString写入短语字符串(这是一个Ansi字符串)时,您可能会丢失一些数据;
>如果您的应用程序非常陈旧(默认对齐在Delphi 4,AFAIR周围更改),可能需要添加ProgramaResultadosType = packed记录.

所以你可能必须:

>使用上述结构阅读现有内容;
>使用新的范例编写,准备好Unicode(例如,像Midas,SQLite3或任何其他的嵌入式数据库).

将现有应用程序转换为更新的Unicode版本的Delphi时值得一读:

> Series of articles;
> Presentation by Marco;
> Delphi Unicode Migration for Mere Mortals: Stories and Advice from the Front Lines.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读