對於bookmark如何中止gotobookmark? |
尚未結案
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
小弟在設gotobookmark時用freebookmark不能將之中斷
以下程式結果會跑到gotomark的資料而不是第一筆
想請教應如何中斷其gotobookmark設定
程式碼如下
procedure Tmainform.house_number_comboboxChange(Sender: TObject);
var aaa:tbookmark;
begin
aaa:=datamodule2.live_member_data_managertable.GetBookmark;
datamodule2.live_member_data_managertable.gotoBookmark(aaa);
datamodule2.live_member_data_managertable.freeBookmark(aaa);
datamodule2.live_member_data_managertable.first;
datamodule2.live_member_data_managertable.gotobookmark; end; 「堅持」從洗馬桶做起
Aric
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: 小弟在設gotobookmark時用freebookmark不能將之中斷 以下程式結果會跑到gotomark的資料而不是第一筆 想請教應如何中斷其gotobookmark設定 程式碼如下 procedure Tmainform.house_number_comboboxChange(Sender: TObject); var aaa:tbookmark; begin aaa:=datamodule2.live_member_data_managertable.GetBookmark; datamodule2.live_member_data_managertable.gotoBookmark(aaa); datamodule2.live_member_data_managertable.freeBookmark(aaa); datamodule2.live_member_data_managertable.first; datamodule2.live_member_data_managertable.gotobookmark; end; 「堅持」從洗馬桶做起 Aric改為下列方式試試 procedure Tmainform.house_number_comboboxChange(Sender: TObject); var aaa:TBookmarkStr; begin aaa:=datamodule2.live_member_data_managertable.Bookmark; //保存bookmark datamodule2.live_member_data_managertable.first; datamodule2.live_member_data_managertable.Bookmark:=aaa; //還原bookmark end; |
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: [quote] 小弟在設gotobookmark時用freebookmark不能將之中斷 以下程式結果會跑到gotomark的資料而不是第一筆 想請教應如何中斷其gotobookmark設定 程式碼如下 procedure Tmainform.house_number_comboboxChange(Sender: TObject); var aaa:tbookmark; begin aaa:=datamodule2.live_member_data_managertable.GetBookmark; datamodule2.live_member_data_managertable.gotoBookmark(aaa); datamodule2.live_member_data_managertable.freeBookmark(aaa); datamodule2.live_member_data_managertable.first; datamodule2.live_member_data_managertable.gotobookmark; [上面這行打錯了要加aaa] datamodule2.live_member_data_managertable.gotobookmark(aaa); end;「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/04/09 10:42:54 發表人 - huangeider 於 2003/04/09 10:43:40 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
引言: 小弟在設gotobookmark時用freebookmark不能將之中斷 以下程式結果會跑到gotomark的資料而不是第一筆 想請教應如何中斷其gotobookmark設定 程式碼如下 procedure Tmainform.house_number_comboboxChange(Sender: TObject); var aaa:tbookmark; begin aaa:=datamodule2.live_member_data_managertable.GetBookmark; datamodule2.live_member_data_managertable.gotoBookmark(aaa); datamodule2.live_member_data_managertable.freeBookmark(aaa); datamodule2.live_member_data_managertable.first; datamodule2.live_member_data_managertable.gotobookmark(aaa); end; 「堅持」從洗馬桶做起 Aric就程式碼而言,上述程式應改為如下 procedure Tmainform.house_number_comboboxChange(Sender: TObject); var aaa:tbookmark; begin aaa:=datamodule2.live_member_data_managertable.GetBookmark; datamodule2.live_member_data_managertable.gotoBookmark(aaa); datamodule2.live_member_data_managertable.first; datamodule2.live_member_data_managertable.gotobookmark(aaa); datamodule2.live_member_data_managertable.freeBookmark(aaa); end; |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
procedure Tmainform.house_number_comboboxChange(Sender: TObject);
var aaa:tbookmark;
begin
aaa:=datamodule2.live_member_data_managertable.GetBookmark;
datamodule2.live_member_data_managertable.gotoBookmark(aaa);//這一行應該可以拿掉
datamodule2.live_member_data_managertable.first;
datamodule2.live_member_data_managertable.gotobookmark(aaa);
datamodule2.live_member_data_managertable.freeBookmark(aaa);
end;
TRY TRY SEE
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
哎呀 這個題目好像是 Free 不到 BookMark... 以我的理解,huangeider兄是說用了 FreeBookMark(aaa) 後 aaa 仍然沒被 Free 掉,再用 GotoBookMark(aaa) 仍然可去到 GetBookMark 時的記錄。不知我的理解對不對,因為一堆人來說這句放那裡那句不用,把我也弄亂了...我想,若改了就試不到以上的問題啦,不過可能是我理解錯誤也未可知。 重申一次,我用 TTable 試過了跟本沒 Free 不掉的問題,若 Free 了再使用 GotoBookMark 就會出現 Access Violation 。換句話說,執行你的程式段會在最後一行 gotoBookMark 時出錯。 我完全沒用 ADO 所以沒法用 ADOTable 測試,但我在 Google 找 "Delphi ADO FreeBookMark" 亦沒找到有任何人說過在 ADO FreeBookMark 有問題。 你若可以做一個簡單的範例程式 (最好用 DBDEMOS 數據庫或用 ClientDataSet 做簡單數據)上傳給大家試試。
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
真的是粉怪的,我發現有些 Table Free 後再 Goto 會出錯有些不會。但 Free 後再 Free 就必然會出錯,我再看 DataSet.FreeBookMark 的程式碼,也就是簡單的使用 FreeMem 來釋放 BookMark 的記憶體。 於是再試不使用 FreeBookMark 直接使用 FreeMem 結果也一樣。似乎是 Free 了佔用該記憶體但當該記憶體未被佔用時,還可讀到裡面的內容。 若要完全清除連結,可在
FreeBookMark 後 加一行
aaa := nil; 這樣 aaa 就不會指向那 Free 了的記憶體了
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |