TStringList的限制 |
尚未結案
|
vip88
一般會員 發表:8 回覆:23 積分:6 註冊:2002-07-15 發送簡訊給我 |
使用TStringList來讀取大檔,似乎有侷限, TStringList* FileList = new TStringList();
FileList->LoadFromFile("C:\\Test.txt"); //170MB的大檔(178,400,477 bytes)
FileList->SaveToFile("C:\\Test2.txt");
delete FileList; 但實際上得到的Test2.txt只有14.7MB(15,481,015 bytes)… 請問各位大大,是不是有我沒有注意到的問題? 環境: Windows 2000, BCB 5 sp1 歡迎光臨神奇力量網 http://www.688.idv.tw/
------
歡迎光臨神奇力量網 http://mpn.adsldns.org/ |
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
我是用 XP HomeEd BCB5 SP1 沒有什麼問題。
是否您的檔案不是純文字檔呢?
以下是我的測試程式,您可以試試看,應該是不會有因大檔案有問題,
當然,如果大於 4G,應該就會有問題,但 4G 之內的應該都是 ok 才對。
而且 TStringList 的 SaveToFile/LoadFromFile 都是叫用 TFileStream,
如果有問題,那 TFileStream 也會有問題。
//--------------------------------------------------------------------------- #include
------
http://www.ViewMove.com |
vip88
一般會員 發表:8 回覆:23 積分:6 註冊:2002-07-15 發送簡訊給我 |
|
vip88
一般會員 發表:8 回覆:23 積分:6 註冊:2002-07-15 發送簡訊給我 |
經過多次的驗證,終於找出問題,原來是\0搞的鬼。 sql2gdb忠實把欄位的null terminated char寫出,
造成TStringList讀取,讀到\0就終止了,這也是為
什麼大檔使用TStringList Load再Save只有14.7MB
的原因,因為讀到\0,TStringList就終止了。 把sql2gdb改寫之後,把\0吃掉,TStringList再去讀
取與存檔就沒有問題。 感謝兩位大大熱情的支援,謝謝。 歡迎光臨神奇力量網
------
歡迎光臨神奇力量網 http://mpn.adsldns.org/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |