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