delphi 怪事.... |
|
蜻蜓草
一般會員 發表:22 回覆:30 積分:10 註冊:2002-03-18 發送簡訊給我 |
|
yorkland
高階會員 發表:2 回覆:138 積分:108 註冊:2004-12-17 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
蜻蜓草
一般會員 發表:22 回覆:30 積分:10 註冊:2002-03-18 發送簡訊給我 |
不好意思小弟是不太熟.....有點弄懂了
另..我先把問題還原一下 , 一開始我的程式是這樣的,上面那個是被我改來改去作實驗的 我弄不懂為何我的 array_index 會是從26開始 downto 1, 我下的指令明明是 "to" 圖中我到中斷點後按單步執行的情況, 我沒按到 26 次 另我發現 如果我在其迴圈中 有包含一行 帶個 showmessage(inttostr(array_index )); 則真的會從 1 TO 26 正常 , 而 port_array[array_index] 這種的不行, 我不懂為何會有這樣的結果 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
蜻蜓草
一般會員 發表:22 回覆:30 積分:10 註冊:2002-03-18 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject);
var s:array[0..20] of pointer; n1,n2:integer; begin for n1:=1 to 20 do s[n1]:=nil; end; 如果是這樣,由 1 到 20 與 20 到 1 ,有何不同?就算隨便亂跳,都沒差別,結果一樣 所以編譯器,最佳化後,就是那樣 你可以改成 for n1:=1 to 20 do begin s[n1]:=nil; end; 或 n1:=1 to 20 do s[n1]:=aa; 其中 function aa: pointer; begin result := nil; end; 編譯器會發現,原來不是一件相同的是,那他就會乖乖做了,如果你很介意一定要由 1 到 20,即使沒差別 這只是因為結果一樣,不然還是依據 1 to 20 與 20 downto 1 的法則 呵呵,結果是,編譯器,比你聰明 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |