線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1514
推到 Plurk!
推到 Facebook!

TstringList.Count不能得出正確的筆數

答題得分者是:dllee
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-07 12:14:06 IP:210.64.xxx.xxx 未訂閱
我將一有97191行(用ultraEdit觀看)的txt檔以TStrigList.Loadfromfile讀入, 再讀取TstringList.count,發現只有40000多筆,這可能是因txt檔的控制字元與 正常的不同,請問TstringList.count是否有bug,要如何才能得到正確的筆數
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-07 13:19:27 IP:220.139.xxx.xxx 未訂閱
引言: 我將一有97191行(用ultraEdit觀看)的txt檔以TStrigList.Loadfromfile讀入, 再讀取TstringList.count,發現只有40000多筆,這可能是因txt檔的控制字元與 正常的不同,請問TstringList.count是否有bug,要如何才能得到正確的筆數
LoadFromFile 會以讀到的檔案,以 #0, #10, #13 等字元分行,並以 #0 字元視為讀檔結束,如果您的 txt 中有藏著 #0 那用 TStringList 與 UltraEdit 讀到的行數就會不同,因為 UltraEdit 連 #0 都讀,直到檔尾。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
rachex2000
一般會員


發表:21
回覆:32
積分:20
註冊:2003-04-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-07 14:03:50 IP:210.64.xxx.xxx 未訂閱
這應該算是TStringList的bug嗎?有其他方法知道筆數嗎? 我是用AssignFile, 與while not Eof(F)去一行行讀出遞增變數得到總筆數, 不知有無其他較好方法
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-07 14:33:42 IP:220.139.xxx.xxx 未訂閱
這不是 BUG 是本來就有的限制,因為 #0 對於大部分的電腦語言都視為字串的結束字元,問題是出在您的原始 txt 是否真的有 #0 字元如果有,想辨法讓它不要有,如果一定會有 #0 那就只有改寫 LoadFromFile,或是先用 TFileStream 或 TMemoryStream 讀檔,把檔案中 #0 的部分去除,改成 #10 或 #13 或 #32 之後再由 TStringList.LoadFromStream 來讀即可,記得先將 Stream.Position 歸零再叫用 TStringList.LoadFromStream    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
系統時間:2024-06-27 2:58:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!