Pre*_*ias 25 delphi string size delphi-7
我正在研究delphi 7,我正在研究一个字符串,我遇到了这个
对于一个默认长度的字符串,即简单地声明为字符串,max size始终为255.永远不允许ShortString增长到超过255个字符.
一旦我必须在我的delphi代码中做这样的事情(这是一个非常大的查询)
var
sMyStringOF256characters : string;
ilength : integer;
begin
sMyStringOF256characters:='ThisStringisofLength256,ThisStringisofLength256,.....'
//length of sMyStringOF256characters is 256
end;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
[错误] 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;
Run Code Online (Sandbox Code Playgroud)
结果是

如您所见,myExtremlyLongString的长度为8894个字符.
为什么delphi没有给myExtremlyLongString提供长度超过255的错误?
编辑 我用过
SetLength(sMyStringOF256characters,300);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
Mik*_*son 34
为什么delphi没有给myExtremlyLongString提供长度超过255的错误?
你在Long String(AnsiString)部分的文本中有一点你的答案.
在当前版本的Delphi中,字符串类型只是AnsiString的别名,
因此字符串不限于255个字符,而是字符串文字.这意味着您可以构建一个长度超过255个字符的字符串,但在代码中不能包含长度超过255个字符的字符串值.如果你愿意,你需要拆分它们.
sMyString:='ThisStringisofLength255'+'ThisStringisofLength255';
Run Code Online (Sandbox Code Playgroud)
将其拆分为:
sMyStringOF256characters :=
'ThisStringis' +
'ofLength256' +
'And ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'ManyManyManyManyManyManyManyManyManyManyManyManyMany' +
'CharactersCharactersCharactersCharactersCharactersCharactersCharactersCharacters';
Run Code Online (Sandbox Code Playgroud)
回到旧的 DOS/Turbo Pascal 时代,“字符串”确实被限制为 255 个字符。很大程度上是因为第一个字节包含字符串长度,一个字节只能有 0 到 255 之间的值。
这在当代版本的 Delphi 中不再是问题。
“ShortString”是旧的 DOS/Pascal 字符串类型的类型。
“LongString”长期以来一直是默认的字符串类型(包括我目前用于大多数生产工作的 Borland Delphi 2006)。LongStrings(又名“AnsiStrings”)保存 8 位字符,并且仅受可用内存的限制。
Delphi 的最新版本(Delphi 2009 及更高版本,包括新的 Delphi XE2)现在都默认为多字节 Unicode“WideString”字符串。WideStrings 和 AnsiStrings 一样,在最大长度上也有效地“无限”。
这篇文章更详细地解释了:
http://delphi.about.com/od/beginners/l/aa071800a.htm