我在delphi 7上工作,我正在处理一个字符串,我偶然发现
对于默认长度的字符串,即简单声明为string,最大值总是255。ShortString从不允许增长到超过255个字符。
有一次,我不得不在我的delphi代码中做这样的事情(这是为了一个非常大的查询)
var
sMyStringOF256characters : string;
ilength : integer;
begin
sMyStringOF256characters:='ThisStringisofLength256,ThisStringisofLength256,.....'
//length of sMyStringOF256characters is 256
end;
我得到了这个错误
错误u_home.pas(38):字符串文字最多可能有255个元素。
但当我尝试这个
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字符。
为什么德尔福没有给出任何错误,称myExtremlyLongString?的长度超过255
我使用的编辑
SetLength(sMyStringOF256characters,300);
但它不起作用。
发布于 2012-01-07 07:14:00
为什么德尔福没有给出任何错误的说法,长度超过255个对myExtremlyLongString?
您的答案在长字符串(AnsiString)部分的文本中有一点低一些。
在Delphi的当前版本中,字符串类型只是AnsiString的别名,
因此,字符串不仅限于255个字符,还包括字符串文本。这意味着您可以生成大于255个字符的字符串,但代码中的字符串值不能大于255个字符。如果你想要的话你就得把他们分开。
sMyString:='ThisStringisofLength255'+'ThisStringisofLength255';
发布于 2012-01-07 07:14:59
分成:
sMyStringOF256characters :=
'ThisStringis' +
'ofLength256' +
'And ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'CharactersCharactersCharactersCharactersCharactersCharactersCharactersCharacters';
发布于 2012-01-07 07:18:01
在过去的DOS/Turbo时代,“字符串”实际上仅限于255个字符。在很大程度上是因为第一个字节包含字符串长度,而一个字节只能有一个0到255之间的值。
在Delphi的当代版本中,这不再是一个问题。
"ShortString“是旧DOS/Pascal字符串类型的类型。
"LongString“是默认的字符串类型已经有很长时间了(包括BorlandDelphi2006,我目前在大多数生产工作中使用)。LongStrings (又名"AnsiStrings")包含8位字符,并且仅受可用内存的限制。
Delphi的最新版本(Delphi 2009及更高版本,包括新的Delphi XE2)现在都默认为多字节Unicode "WideString“字符串。WideStrings和AnsiStrings一样,在最大长度上也实际上是“无限”的。
本文将更详细地解释:
https://stackoverflow.com/questions/8767899
复制相似问题