全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:437
推到 Plurk!
推到 Facebook!

LoadFromFile 讀取不完全

答題得分者是:sryang
judas81719
一般會員


發表:3
回覆:5
積分:1
註冊:2016-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-05-31 15:25:20 IP:60.251.xxx.xxx 未訂閱
各位好,我在使用LoadFromFile時遇到了一點問題
在DELPHI中我要使用LoadFromFile讀取文字檔到TStringList進程式做處理

但會遇到讀取不完全的情況。

使用Notepad++編輯,會發現讀取斷在有黑底白字NUL的地方
目前的處理方式是先跳過這種檔案,發現時手動刪掉NUL 再把檔案丟回去處理

想請問有什麼辦法可以解決,或是有辦法另外處理這種文字檔。
//附檔是有NUL的片段 供各位參考 只有用Notepad++開啟會看的到NUL
編輯記錄
judas81719 重新編輯於 2017-06-01 09:54:01, 註解 無‧
judas81719 重新編輯於 2017-06-01 09:56:06, 註解 無‧
sryang
尊榮會員


發表:38
回覆:741
積分:875
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-06-01 14:05:04 IP:59.127.xxx.xxx 未訂閱
得用老方法讀檔了,一次讀一個字進來,一個個判斷
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/
編輯記錄
sryang 重新編輯於 2017-06-01 14:06:56, 註解 無‧
sryang 重新編輯於 2017-06-01 14:07:24, 註解 無‧
sryang 重新編輯於 2017-06-01 14:07:52, 註解 無‧
judas81719
一般會員


發表:3
回覆:5
積分:1
註冊:2016-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2017-06-01 18:01:58 IP:60.251.xxx.xxx 未訂閱
謝謝 問題可以解決了!
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2017-06-02 09:33:08 IP:59.120.xxx.xxx 未訂閱
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 轉換功能!
編輯記錄
GrandRURU 重新編輯於 2017-06-02 09:40:08, 註解 無‧
GrandRURU 重新編輯於 2017-06-02 09:59:46, 註解 無‧
GrandRURU 重新編輯於 2017-06-02 10:02:04, 註解 無‧
GrandRURU 重新編輯於 2017-06-02 10:02:36, 註解 無‧
pcplayer99
尊榮會員


發表:142
回覆:738
積分:591
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2017-10-18 17:05:01 IP:113.116.xxx.xxx 未訂閱
TStringList.LoadFromFile('YourFile.txt') 行不行?
sryang
尊榮會員


發表:38
回覆:741
積分:875
註冊:2002-06-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2017-10-18 20:05:07 IP:59.127.xxx.xxx 未訂閱
===================引 用 pcplayer99 文 章===================
TStringList.LoadFromFile('YourFile.txt') 行不行?

樓主的問題就是使用 TStringList.LoadFromFile 會遇到檔案中有 NUL (ASCII = 0) 字元會斷掉
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
系統時間:2017-10-23 3:02:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!