LoadFromFile 讀取不完全 |
答題得分者是:sryang
|
judas81719
一般會員 發表:3 回覆:5 積分:1 註冊:2016-05-31 發送簡訊給我 |
各位好,我在使用LoadFromFile時遇到了一點問題
在DELPHI中我要使用LoadFromFile讀取文字檔到TStringList進程式做處理 但會遇到讀取不完全的情況。 使用Notepad++編輯,會發現讀取斷在有黑底白字NUL的地方 目前的處理方式是先跳過這種檔案,發現時手動刪掉NUL的片段 供各位參考 只有用Notepad++開啟會看的到NUL 編輯記錄
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
得用老方法讀檔了,一次讀一個字進來,一個個判斷
procedure TForm1.Button1Click(Sender: TObject); var F: TextFile; C: Char; S: string; begin {$I-} AssignFile(F, 'C:\TEMP\592e6fe04358a_testdata.txt'); Reset(F); {$I+} S := ''; while not Eof(F) do begin Read(F, C); if Ord(C) = 0 then C := #32; S := S + C; end; CloseFile(F); Memo1.Lines.Text := S; end;
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
judas81719
一般會員 發表:3 回覆:5 積分:1 註冊:2016-05-31 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
XE 之後的寫法:
procedure TForm2.Button1Click(Sender: TObject); var s: string; ss: TStringStream; i: Integer; begin s := TFile.ReadAllText('c:\592e6fe04358a_testdata.txt', TEncoding.GetEncoding(950)); // uses IOUtils i := 1; while i < Length(s) do if s[i] = #0 then Delete(s, i, 1) else Inc(i); ss := TStringStream.Create(s, TEncoding.GetEncoding(950)); try Memo1.Text := ss.DataString; finally ss.Free; end; end; 謝謝 Sryang 大補完 Unicode 轉換功能! |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
===================引 用 pcplayer99 文 章===================
TStringList.LoadFromFile('YourFile.txt') 行不行? 樓主的問題就是使用 TStringList.LoadFromFile 會遇到檔案中有 NUL (ASCII = 0) 字元會斷掉
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |