線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3323
推到 Plurk!
推到 Facebook!

Tmemorystream 設定Setsize時超過int的範圍怎麼半??

答題得分者是:harpist
ddaken
一般會員


發表:39
回覆:33
積分:19
註冊:2005-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-19 16:00:54 IP:220.133.xxx.xxx 訂閱
請問各位大大小弟使用Tmemorystream時
如果再設定memorystream的大小時,由於Setsize()只能輸入int的範圍
可是小弟需要超過65536也就是要使用int64時
小弟就不能用

unsigned long xx=100000;
memorystream->SetSize(xx);

那麼小弟該怎麼設定memorystream的大小呢??

我發現如果直接使用
memorystream->SetSize(100000);時
並不會有錯,
但小弟並不是每次都剛好要100000呀??


編輯記錄
ddaken 重新編輯於 2007-04-19 16:02:14, 註解 無‧
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-19 17:21:16 IP:59.104.xxx.xxx 未訂閱
<textarea class="cpp" rows="10" cols="60" name="code"> int size = 821420032; //最大值 TMemoryStream* pms = new TMemoryStream(); pms->SetSize(size); ShowMessage(pms->Size); delete pms; </textarea>
最大值是821420032不夠嗎?
------
~§~迷時師渡,悟了自渡~§~
ddaken
一般會員


發表:39
回覆:33
積分:19
註冊:2005-01-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-19 17:31:21 IP:220.133.xxx.xxx 訂閱

===================引 用 harpist 文 章===================
<textarea class="cpp" rows="10" cols="60" name="code"> int size = 821420032; //最大值 TMemoryStream* pms = new TMemoryStream(); pms->SetSize(size); ShowMessage(pms->Size); delete pms; </textarea>?
最大值是821420032不夠嗎?

int 最大值不是-32768~32768
即使使用usigned long 也只有0~65535
??怎麼會是821420032??
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-19 18:44:19 IP:59.104.xxx.xxx 未訂閱
Type Size (bits) Range
short int 16 -32,768 <= X <= 32,767
unsigned int 32 0 <= X <= 4,294,967,295
int 32 -2,147,483,648 <= X <= 2,147,483,647
unsigned long 32 0 <= X <= 4,294,967,295

BCB裡的定義是這樣的
至於怎麼會是821420032...我試出來的

===================引 用 ddaken 文 章===================

int 最大值不是-32768~32768
即使使用usigned long 也只有0~65535
??怎麼會是821420032??
------
~§~迷時師渡,悟了自渡~§~
lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-25 16:34:25 IP:203.73.xxx.xxx 訂閱
呵呵~~你說的 int 範圍是-32768~32768(0x7FFF)

那是16位元時代的事,int 是2個BYTE(那是上個世紀的事了 )
現在是32位元的時代,int 和long都是4個BYTE
int 的範圍變成 -2147483648 ~ 2147483647(0x7FFFFFFF)

等64位元的CPU普及以後,int 搞不好就變成64位元了(範圍變成-9223372036854775808 ~ 9223372036854775807

===================引 用 ddaken 文 章===================
int 最大值不是-32768~32768
即使使用usigned long 也只有0~65535
??怎麼會是821420032??
系統時間:2024-05-17 7:24:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!