我在delphi 7工作,我正在工作的字符串,我遇到这个
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:=''; Label1.Caption:=''; for iCounter:=0 to 2500 do begin myExtremlyLongString:=myExtremlyLongString+inttostr(iCounter); Label1.Caption:=myExtremlyLongString; end; Label2.Caption:=inttostr(length(myExtremlyLongString)); end;
结果是
你可以看到myExtremlyLongString的长度是8894个字符。
为什么delphi没有给出任何错误,说myExtremlyLongString的长度超过255?
编辑
我用了
SetLength(sMyStringOF256characters,300);
但它没有工作。
解决方法
why did not delphi give any error saying the length is beyond 255 for
myExtremlyLongString?
在Long String(AnsiString)部分的文本中你有一个答案。
In current versions of Delphi,the string type is simply an alias for
AnsiString,
所以字符串不限于255个字符,而是一个字符串文字。这意味着您可以构建长度超过255个字符的字符串,但不能在长度超过255个字符的代码中使用字符串值。如果你愿意,你需要拆分它们。
sMyString:='ThisStringisofLength255'+'ThisStringisofLength255';