兩者有何不同? |
答題得分者是:Mickey
|
breeze_1
一般會員 發表:33 回覆:72 積分:21 註冊:2003-05-26 發送簡訊給我 |
Session.GetStoredProcNames('aa',mystringlist);
listbox1.items:=mystringlist;
'aa'為databasename;
listbox1.itmes顯示了所有的storeprocname; listbox2.items:=listbox1.items;
和
for i:=0 to listbox1.items.count-1 do begin
listbox2.items[i]:=listbox1.items[i];
end; 有什麽區別?爲什麽會顯示index out of bound(0)?
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
breeze_1 你好: listbox1.items:=mystringlist; 是將 listbox1.items 的指標(Pointer)
指向 mystringlist, 也就是說, mystringlist 與 listbox1.items 是用相
同的位址, 一但 mystringlist.free, 則listbox1.items 內容也被釋放掉,
而且 listbox1.items 原先若有內容, 則其所佔用的記憶體空間, 可能從此
流失掉, 所以這是很危險的寫法. 應該改用 listbox1.item.addstrings(mystringlist); 相同的, listbox2.items:=listbox1.items 也是不妥當的寫法. for i:=0 to listbox1.items.count-1 do begin
listbox2.items[i]:=listbox1.items[i];
這樣一個一個 item 抄寫也行, 只是程式有點冗長. 發表人 - Mickey 於 2003/11/08 11:06:37
|
breeze_1
一般會員 發表:33 回覆:72 積分:21 註冊:2003-05-26 發送簡訊給我 |
MICKEY你好
這是DELPHI的HELP EXAMPLE MyStringList := TStringList.Create;
try
Session.GetStoredProcNames('IB_EMPLOYEE', MyStringList);
{ fill a list box with stored procedure names
for the user to select from }
ListBox1.Items := MyStringList;
finally
MyStringList.Free;
end;
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: listbox2.items:=listbox1.items; 和 for i:=0 to listbox1.items.count-1 do begin listbox2.items[i]:=listbox1.items[i]; end; 有什麽區別?爲什麽會顯示index out of bound(0)?breeze_1 你好: 如果你認為那是好的寫法, 那就好, 我沒有其他意見. 如果你只是想解決問題 listbox2.items[i]:=listbox1.items[i]; 改成 listbox2.items.add(listbox1.items[i]); 因為 Loop 開始時 listbox2.items.count 仍為 0. |
breeze_1
一般會員 發表:33 回覆:72 積分:21 註冊:2003-05-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |