改寫離線包雜談 |
|
TATSU
版主 ![]() ![]() ![]() 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
其實想借這個地方跟各位討論並希望可以解決一些問題。 我改寫的這個離線包沒有使用到 DBGrid 的 database 元件,反而用一個 TVirtualTreeView ,其他人如果不太懂這個元件可以用 TTreeView 代替,但速度並不是因為這個元件而提升,反而在一讀取資料時,我改變讀取方法: 讀取主題列表時,只因應需要根據個別的 record no. 去 query 中抓取資料。 至於另一個問題,那些內文訊息,可以參考以下作法:
//方法一 //欄位 MESSAGE 是一個 memo field strMemo := MiscQry.FieldByName('MESSAGE').AsString ;跟 //方法二 MemoStream := TMemoryStream.Create ; (MiscQry.FieldByName('MESSAGE') as TMemoField).SaveToStream(MemoStream); GetMem(cTempBuffer, MemoStream.Size 1) ; FillChar(cTempBuffer^, MemoStream.Size, #0) ; MemoStream.Seek(0,0) ; MemoStream.Read(cTempBuffer^, MemoStream.Size); MemoStream.Free ;的速度實在差得遠 如果 memo 內的資料不多,用方法一或二都沒有問題,但當 memo 的資料多,使用方法一會十分慢。 到最後的展示內文所用到 TWebbrowser 元件,原來傳送 buffer 所用的方法有別,對顯示效果亦有所不同,這一方面我仍在研究中。 當然還有其他的問題,我還未解決,就像 MS Access 要匯入另一個新資料時,其實可以利用到 MS-Access 的 linked table ,作法由兩個 database 相互交換資料變成由一個 database 的個別 table 交換資料,但我對應用那些 adoConn := CreateOleObject('ADODB.Connection') ; 的東東認識有限,所以仍未可以改進匯入新資料時的速度。 |
TATSU
版主 ![]() ![]() ![]() 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
改寫這個程式時,不停在網上找資料,有外國、有中國、有台灣的,但沒有香港,香港好像較少程式員的社群,亦較少人用 Delphi 似的,我想應該是的,我手上的一本 Mastering Delphi 7 都是從 Amazon 訂購,我在香港想找一本講解 Delphi 的書真的很難。 原來離線閱讀並不是新鮮事,中國已經有 Delphi 社群網站[url=http://www.delphibox.com]Delphi 盒子[/url]推出離線閱讀多時,資料庫已經超越 1 GB ,壓縮的檔案都要過 200 MB ,可惜我的硬碟的空間太緊張,不然都下載試試。
|
conundrum
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
TATSU
版主 ![]() ![]() ![]() 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
|
TATSU
版主 ![]() ![]() ![]() 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |