string - Delphi 'string' 文字怎么可能超过 255 个字符?

标签 string delphi size delphi-7 string-literals

我正在使用 Delphi 7 和字符串,以及 I came across this :

For a string of default length, that is, declared simply as string, max size is always 255. A ShortString is never allowed to grow to more than 255 characters.

有一次我必须在我的 Delphi 代码中执行类似的操作(这是一个非常大的查询):

var
  sMyStringOF256characters : String;
  ilength : Integer;
begin
  sMyStringOF256characters := 'ThisStringisofLength256,ThisStringisofLength256,.....'
  // length of sMyStringOF256characters is 256
end;

...我收到此错误:

[Error] u_home.pas(38): String literals may have at most 255 elements.

但是当我尝试这个时:

var
  iCounter              : Integer;
  myExtremlyLongString  : String;
begin
  myExtremlyLongString := '';
  for iCounter := 0 to 2500 do
  begin
    myExtremlyLongString := myExtremlyLongString + IntToStr(iCounter);
  end;
  Label1.Caption := myExtremlyLongString;
  Label2.Caption := IntToStr(Length(myExtremlyLongString));
end; 

...结果是:

Delphi Form show both Label's values

如您所见,myExtremlyLongString 的长度为 8894 个字符。为什么 Delphi 没有给出任何错误,指出 myExtremlyLongString 的长度超过 255?我也用过这个,但它不起作用:

SetLength(sMyStringOF256characters, 300);

最佳答案

why did not delphi give any error saying the length is beyond 255 for myExtremlyLongString?

您的答案位于长字符串 (AnsiString) 部分的文本中。

In current versions of Delphi, the string type is simply an alias for AnsiString,

因此字符串不限于 255 个字符,但字符串文字却如此。这意味着您可以构建长度超过 255 个字符的字符串,但代码中的字符串值不能超过 255 个字符。如果你想要的话,你需要将它们分开。

sMyString:='ThisStringisofLength255'+'ThisStringisofLength255';

关于string - Delphi 'string' 文字怎么可能超过 255 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767899/

相关文章:

regex - Delphi - 用户指定的字符串操作

c - 需要 fgets 中的最后一个 '\0'

delphi - 是否有可以包含资源的受支持文件类型列表?

delphi - 如何从某个 IMAP 邮箱获取所有电子邮件的正文?

javascript - 如何自动调整内容字体大小以适应其跨度

android - 在Android中调整布局的动态大小

javascript - 如何在Jquery中读取cookie值并创建另一个具有相同值的cookie

string - 从 swift 中的字符串开头修剪数字和分隔符值

delphi - 如何在同一个项目中针对不同版本的Delphi使用不同的包

sql - 多少行数据算太多数据行?