IM工作的德尔福7和我工作的一个字符串,我碰到这个delphi'string'文字怎么能超过255?
上 delphi strings对于默认长度的字符串,也就是宣布简称为字符串,最大大小始终是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的长度为字符。
为什么delphi没有给出任何错误,说长度超过255为myExtremlyLongString?
编辑 我用
SetLength(sMyStringOF256characters,300);
,但它不工作。
也许你只是读错文档。顺便说一句,它真的不清楚你的意思是“动态分配”,而不是......什么? – OnTheFly 2012-01-07 12:51:18
@ user539484:在循环过程中运行时的含义可能是strVal:= mystring,就像是一个循环值,你赋值给字符串变量 – PresleyDias 2012-01-07 12:57:30
啊,从头开始“动态”的,然后,关于赋值与**声明**。上面引用的内容是关于声明,更具体地说是关于字符**文字**的编译器限制。它已经通过历史手段连接到Turbo Pascal字符串。 – OnTheFly 2012-01-07 13:19:33