string最大可以多長,array of char最大可以多長。 |
尚未結案
|
Leway
一般會員 ![]() ![]() 發表:43 回覆:71 積分:22 註冊:2003-07-29 發送簡訊給我 |
|
ROLAND168
一般會員 ![]() ![]() 發表:39 回覆:49 積分:17 註冊:2003-02-26 發送簡訊給我 |
|
aip999
初階會員 ![]() ![]() 發表:10 回覆:63 積分:44 註冊:2002-03-29 發送簡訊給我 |
|
liorex
初階會員 ![]() ![]() 發表:19 回覆:60 積分:32 註冊:2002-08-20 發送簡訊給我 |
若沒有特別設定DELPHI 的STRING 是定義成ansiString 可以到2G
shotString 好像是255
PS widestring 也是2G
參考HELP
Type Maximum length Memory required Used for ShortString 255 characters 2 to 256 bytes backward compatibility AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc. WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applications---------------------- 一切有為法 如夢幻泡影 如露亦如電 應做如是觀 ---------------------- |
Leway
一般會員 ![]() ![]() 發表:43 回覆:71 積分:22 註冊:2003-07-29 發送簡訊給我 |
|
seaturn99
版主 ![]() ![]() ![]() ![]() 發表:69 回覆:427 積分:214 註冊:2003-08-25 發送簡訊給我 |
最大值應該是 2147483646 1 個 Char
array[0..2147483646] of char; 宣告一個 Char Array 如果超過 2147483647 (Integer => 2G 限制),會有 Error Message :
[Error] Unit1.pas(29): Data type too large: exceeds 2 GB 疑問 1: 放在 物件 private/public 宣告 array[0..2147483646] of char;
compile 不會過,不過在 procedure 的 Local 內宣告沒問題.. 從 procedure SetLength(var S; NewLength: Integer); 宣告之 prototype 應該也可以看出 Integer 的限制... 不過實際上寫一段 code 去測試 ...
procedure TForm1.Button1Click(Sender: TObject);
var
MaxNum:integer;
CharArr:array of char;
begin
try
MaxNum := Round(2147483646/2);
SetLength(CharArr,MaxNum);
finally
SetLength(CharArr,0);
end;
end; SetLength 2147483646, compile 會過,不過 Runtime 會掛掉...
嗯,在我的電腦中 1G 左右就 OutofMemory 了... 有沒有懂底層運作的前輩可以大概描述一下不同區段 (private/public Local)宣告與 SetLength 實際上佔用記憶體的位置 (OS 控制的 2G 上下或是在系統的 Heap or Stack 中) ----
我只會兩件事,這也不會,那也不會
|
Leway
一般會員 ![]() ![]() 發表:43 回覆:71 積分:22 註冊:2003-07-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |